nodejs读取本地中文json文件出现乱码解决方法
1. 确定json文件是UTF-8 无BOM编码的的。如果有BOM,会在读取第一行的时候出现乱码。
Per "fs.readFileSync(filename, 'utf8') doesn't strip BOM markers #1918", fs.readFile is
working as designed: BOM is not stripped from the header of the UTF-8 file, if it exists. It at the discretion of the developer to handle this.
Possible workarounds:
- data= data.replace(/^\uFEFF/, ''); perhttps://github./joyent/node/issues/1918#issuement-2480359
- Transform the ining stream to remove the BOM header with the NPM module bomstrip perhttps://github./joyent/node/issues/1918#issuement-38491548
What you are getting is the byte order mark header (BOM) of the UTF-8 file. When JSON.parse sees
this, it gives an syntax error (read: "unexpected character" error). You must strip the byte order mark from the file before passing it to JSON.parse:
fs.readFile('./myconfig.json', 'utf8', function (err, data) { myconfig = JSON.parse(data.toString('utf8').replace(/^\uFEFF/, '')); }); // note: data is an instance of Buffer
2. 确定json没有格式错误。我在用utf8编码并用utf8 encoding来读取文件之后依然报错,百思不得其解。
发现json有两个editor没有发现的格式错误,一个是一个数组中两个元素之间少了一个“,”,另一个是另一个数组多了一个“,”。
注1Node的iconv模块,仅支持linux,不支持Windows,要用纯js的iconv-lite,另作者说iconv-lite的性能更好,具体参考Git站点iconv-lite
注2我在测试读写文件时,始终无法把中文写入文件,一直乱码,读取正常,后来同事帮我发现js文件的编码格式是ansi,nodejs的代码文件必须是utf8格式
注3如果程序操作的文件,都是以UTF8编码格式保存的,那么就不需要使用iconv模块,直接以utf8格式读取文件即可,如
// 参数file,必须保存为utf8格式,否则里面的中文会乱码 function readFile(file){ // readFile的第2个参数表示读取编码格式,如果未传递这个参数,表示返回Buffer字节数组 fs.readFile(file, "utf8", function(err, data){ if(err) console.log("读取文件fail " + err); else{ // 读取成功时 console.log(data);// 直接输出中文字符串了 } }); }
nodejs读取中文文件编码问题
准备一个文本文件(也可以是csv文件等)test.txt和text.csv,nodejs文件test.js如下
var iconv = require('iconv-lite'); var fs = require('fs'); var fileStr = fs.readFileSync('D:\\test.csv', {encoding:'binary'}); var buf = new Buffer(fileStr, 'binary'); var str = iconv.decode(buf, 'GBK'); console.log(str);
直接读文件的话是乱码,不信你可以试试。需要先统一用二进制编码方式读取,然后再用GBK解码。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程