Node.js中读取文件后用Json.parse方法报错解决方案

时间:2023-03-09 09:44:10
Node.js中读取文件后用Json.parse方法报错解决方案

今天,在调试一个node项目时,发现了一个很大的坑,在此分享给大家!

大家都知道,Json.parse()方法对格式要求是很严格的,格式不对极其容易报错,但是有时候格式看似是正确的也会报错.

Node.js中读取文件后用Json.parse方法报错解决方案

比如这一段在控制台可以正确的用Json.parse()方法解析出来,但是我把它放到记事本中仍然可以正确读取到一模一样的数据

Node.js中读取文件后用Json.parse方法报错解决方案

但是如果此时用JSON.parse方法解析这段字符串就会报错.

Node.js中读取文件后用Json.parse方法报错解决方案

为什么呢,因为记事本这个编辑工具在手动保存时会自动把数据做一些处理,导致数据看起来是对的,但是却无法解析,因为数据里面搀杂着不会显示的unicode字符,

utf-8分有dom版和无dom版,一般编辑器不刻意设置会默认保存为带dom的utf8,解决办法是先将读到的文件转成二进制,然后检索dom符号删除,以下是方法:

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');
}