我正在使用这个 json2scv打包解析我的数据(示例 json 数据在下面的代码中描述)
我正在尝试使用以下代码在我的 nodejs 应用程序中生成一个 CSV 文件:
如果我在 Excel 中打开文件,那么在应该出现 £
符号的地方我会得到 £
。
var json2csv = require('json2csv');
var fs = require('fs');
var fields = ['car', 'price', 'color'];
var myCars = [
{
"car": "Audi",
"price": "£40000",
"color": "blue"
}, {
"car": "BMW",
"price": "£35000",
"color": "black"
}, {
"car": "Porsche",
"price": "£60000",
"color": "green"
}
];
var csvStr = json2csv({ data: myCars, fields: fields, del: ',' });
fs.writeFile('file.csv', csvStr, { encoding: 'utf8' },function(err) {
if (err) throw err;
console.log('file saved');
});
有什么想法吗?
谢谢。
最佳答案
我已经从这个答案中得到了解决方案,它是问题线程:https://stackoverflow.com/a/27975629/5228251
UTF-8 Example:
fs.writeFile(someFilename, '\ufeff' + html, { encoding: 'utf8' }, function(err) { /* The actual byte order mark written to the file is EF BB BF */ }
UTF-16 Little Endian Example:
fs.writeFile(someFilename, '\ufeff' + html, { encoding: 'utf16le' }, function(err) { /* The actual byte order mark written to the file is FF FE */ }
在完成上面的回答和线程之后,我修改了我的代码,如下所示:
- 将分隔符选项更改为
"\t"
而不是","
- 将
"\ufeff"
添加到 csv 字符串中 - 更改编码以使用
"utf16le"
而不是"utf8"
这是我更新后的代码:
var json2csv = require('json2csv');
var fs = require('fs');
var fields = ['car', 'price', 'color'];
var myCars = [
{
"car": "Audi",
"price": "£40000",
"color": "blue"
}, {
"car": "BMW",
"price": "£35000",
"color": "black"
}, {
"car": "Porsche",
"price": "£60000",
"color": "green"
}
];
var csvStr = json2csv({ data: myCars, fields: fields, del: '\t' });
fs.writeFile('file.csv', '\ufeff' + csvStr, { encoding: 'utf16le' },function(err) {
if (err) throw err;
console.log('file saved');
});
希望这对其他人有帮助。
关于javascript - Node.js 生成的 csv 文件显示英镑符号 (£),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232464/