Node.js 读取csv时返回非utf-8响应
在我的例子中,我尝试读取谷歌云存储上可用的csv文件。 这是我的代码:Node.js 读取csv时返回非utf-8响应,node.js,csv,google-cloud-storage,Node.js,Csv,Google Cloud Storage,在我的例子中,我尝试读取谷歌云存储上可用的csv文件。 这是我的代码: const csv = require('csv-parser'); const fs = require('fs'); const file= storage.bucket('my-bucket').file('file.csv') file.createReadStream({encoding: 'utf8'}) .on('error', (err) => { console.log(err
const csv = require('csv-parser');
const fs = require('fs');
const file= storage.bucket('my-bucket').file('file.csv')
file.createReadStream({encoding: 'utf8'})
.on('error', (err) => {
console.log(err)
})
.pipe(csv())
.on('data', (row) => {
console.log(row);
})
.on('end', (end) => {
console.log(end)
})
});
但返回的内容如下:
'\u0000D\u0000a\u0000i\u0000l\u0000y\u0000 \u0000D\u0000e\u0000v\u0000i\u0000c\u0000e\u0000 \u0000I\u0000n\u0000s\u0000t\u0000a\u0000l\u0000l\u0000s\u0000': '\u00005\u00000\u0000'
知道这里可能出了什么问题吗?一种方法可以是:
const csv = require('csv-parser');
const fs = require('fs');
const file = storage.bucket('my-bucket').file('file.csv');
let data = '';
file.createReadStream({encoding: 'utf8'})
.on('error', (err) => {
console.log(err)
})
.pipe(csv())
.on('data', (row) => {
data += row; // or directly apply as row.toString('utf-8')
console.log(row);
})
.on('end', (end) => {
// so all is buffered now lets make it readable
data = data.toString('utf-8');
console.log(data);
});
由于您读取的数据的每个字节看起来都是
00
,因此该文件可能不是UTF-8,而是UTF-16
请尝试file.createReadStream({encoding:'utf16le'})
,或者如果它仍然是乱码,请尝试file.createReadStream({encoding:'utf16be'})