Open ufologist opened 7 years ago
在使用 Node.js 写一个包含中文内容的 csv 文件时, 用 UltraEdit 打开是正常的, 没有乱码. 但使用 Microsoft Excel 打开时, 就是一坨乱码.
真是郁闷, 肯定是掉坑里面了, 让我们查查资料看看, 想必碰到这个问题的人不止我一个.
NodeJS CSV导出文件名和内容乱码解决
// 解决excel打开内容乱码 var dataBuffer = Buffer.concat([new Buffer('\xEF\xBB\xBF', 'binary'), new Buffer(data)]);
怎么解决数据保存到csv文件乱码问题
由于 node.js 只支持 ascii、utf8、base64、binary 编码方式, 不支持 MS 的 utf-8 + BOM 格式, 所以 excel 打开中文乱码 解决方法已经很明显了,既然excel需要BOM,每次写入数据前先加入一个BOM就可以了嘛。utf-8对应的BOM是EF BB BF
由于 node.js 只支持 ascii、utf8、base64、binary 编码方式, 不支持 MS 的 utf-8 + BOM 格式, 所以 excel 打开中文乱码
解决方法已经很明显了,既然excel需要BOM,每次写入数据前先加入一个BOM就可以了嘛。utf-8对应的BOM是EF BB BF
EF BB BF
用上面提到代码果然就解决了乱码问题.
var fs = require('fs'); var content = '中文1,a1,b1,123\n中文2,a2,b2,456'; var msExcelBuffer = Buffer.concat([ new Buffer('\xEF\xBB\xBF', 'binary'), new Buffer(content) ]); fs.writeFileSync('test.csv', msExcelBuffer); // 直接写入 csv, 使用 excel 打开会是乱码 // fs.writeFileSync('test.csv', content);
完美解决我的问题
刚好搜到解决办法,通常别人推荐使用iconv-lite,这个则是说明了问题的原因,赞
iconv-lite
赞赞赞
在使用 Node.js 写一个包含中文内容的 csv 文件时, 用 UltraEdit 打开是正常的, 没有乱码. 但使用 Microsoft Excel 打开时, 就是一坨乱码.
真是郁闷, 肯定是掉坑里面了, 让我们查查资料看看, 想必碰到这个问题的人不止我一个.
NodeJS CSV导出文件名和内容乱码解决
怎么解决数据保存到csv文件乱码问题
用上面提到代码果然就解决了乱码问题.