f2e-journey / xueqianban

学前班 - 学前端
http://f2e-journey.github.io/xueqianban/
MIT License
320 stars 56 forks source link

NodeJS 写的 csv 文件 Excel 打开是乱码 #34

Open ufologist opened 7 years ago

ufologist commented 7 years ago

在使用 Node.js 写一个包含中文内容的 csv 文件时, 用 UltraEdit 打开是正常的, 没有乱码. 但使用 Microsoft Excel 打开时, 就是一坨乱码.

nodejs-csv-ms-excel-messy.png

真是郁闷, 肯定是掉坑里面了, 让我们查查资料看看, 想必碰到这个问题的人不止我一个.

用上面提到代码果然就解决了乱码问题.

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

nodejs-csv-ms-excel-messy-result.png

jiandandkl commented 7 years ago

完美解决我的问题

oliyg commented 6 years ago

刚好搜到解决办法,通常别人推荐使用iconv-lite,这个则是说明了问题的原因,赞

hhh-design commented 2 years ago

赞赞赞