今天,在调试一个node项目时,发现了一个很大的坑,在此分享给你们!node
你们都知道,Json.parse()方法对格式要求是很严格的,格式不对极其容易报错,可是有时候格式看似是正确的也会报错.dom
好比这一段在控制台能够正确的用Json.parse()方法解析出来,可是我把它放到记事本中仍然能够正确读取到如出一辙的数据编辑器
可是若是此时用JSON.parse方法解析这段字符串就会报错.工具
为何呢,由于记事本这个编辑工具在手动保存时会自动把数据作一些处理,致使数据看起来是对的,可是却没法解析,由于数据里面搀杂着不会显示的unicode字符,spa
utf-8分有dom版和无dom版,通常编辑器不刻意设置会默认保存为带dom的utf8,解决办法是先将读到的文件转成二进制,而后检索dom符号删除,如下是方法:3d
function
readText(pathname) {
var
bin = fs.readFileSync(pathname);
if
(bin[0] === 0xEF && bin[1] === 0xBB && bin[2] === 0xBF) {
bin = bin.slice(3);
}
return
bin.toString(
'utf-8'
);
}