我有一个名为“file.csv”的文件,此文件包含以下数据:
ID Full name
1 Steve
2 John
3 nam
4 Hạnh
5 Thủy
我使用下面的段代码将此文件解析为json文件。但我的结果不是utf8
代码:
var fastCsv = require("fast-csv");
var fs = require("fs");
var iconv = require('iconv-lite');
var fileStream = fs.createReadStream("file.csv");
fastCsv
.fromStream(fileStream, {headers : ["id", "full_name"]})
.on("data", function(data){
console.log("------------------------");
console.log("data: ", data);
})
.on("end", function(){
console.log("done");
});
结果:
data: { id: '��I\u0000D\u0000', full_name: '\u0000F\u0000u\u0000l\u0000l\u0000 \u0000n\u0000a\u0000m\u0000e\u0000' }
data: { id: '\u00001\u0000',full_name: '\u0000S\u0000t\u0000e\u0000v\u0000e\u0000' }
data: { id: '\u00002\u0000',full_name: '\u0000J\u0000o\u0000h\u0000n\u0000' }
data: { id: '\u00003\u0000',full_name: '\u0000n\u0000a\u0000m\u0000' }
data: { id: '\u00004\u0000', full_name: '\u0000H\u0000�\u001en\u0000h\u0000' }
data: { id: '\u00005\u0000',full_name: '\u0000T\u0000h\u0000�\u001ey\u0000' }
data: { id: '\u0000', full_name: '' }
如何将我的结果转换为utf8?
答案 0 :(得分:1)
您的输入文件以UTF-16LE编码,但它已被读取为好像是UTF-8。
尝试使用fs.createReadStream('file.csv', {encoding: 'utf-16le'})
打开文件。
答案 1 :(得分:0)
查看Javascript Has a Unicode Problem
在您的情况下,您需要解码转义的unicode字符。名为punycode的节点附带的库可以处理这个问题。
通过以下方式导入punycode:
var punycode = require("punycode");
变化:
console.log("firstName: ", data);
要:
console.log("firstName: ", punycode.ucs2.decode(data));
您可能需要进一步细分data
对象以解码其属性,但我无法从您的回答中了解其结构。