JavaScript 希伯来文 CSV 解析问题
JavaScript hebrew CSV parsing issue
所以我从 excel 得到了一个保存为 CSV -UTF-8 文件的 csv 文件
右边在 visual studio 左边在 excel.
当我尝试使用 PapaParse/csv-parser 进行解析时,我仍然看到 > 格式的输出
这意味着编码:
PapaParse 尝试:
papa.parse(file, {
worker: true,
step: function (result) {
count++;
console.log(result.data[0])
},
complete: function (results, file) {//
console.log('parsing complete read', count, 'records.');
}
});
csv-reader 尝试:
const csv = require('csv-parser');
const results = [];
fs.createReadStream('Cities.csv')
.pipe(csv())
.on('data', function (datarow) {
results.push(datarow);
})
.on('end', function () {
console.log(results.toString('utf-8");
});
在这两种情况下,输出都是 >cannot read hebrew chars
在我看来,您正在将原始块缓冲区传输到 csv
,而不是使用 UTF-8 编码转换为字符串的结果。你没有告诉 createReadStream
为你处理任何编码工作,所以它会读取原始数据并将它们传递给 csv
函数(因为你正在传递给它)作为 Buffer
实例。
与其读取原始数据并在之后进行转换,不如告诉 createReadStream
您希望它通过其 options parameter:
为您处理转换
const csv = require('csv-parser');
const results = [];
fs.createReadStream('Cities.csv', 'utf-8')
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^
.pipe(csv())
.on('data', function (datarow) {
results.push(datarow);
})
.on('end', function () {
// Use `results` here (it's an array of objects according to the
// csv-parser documentation; calling `toString` on it probably isn't
// what you want)
});
你可以试试加上这个:
格式:“UTF-8”
papa.parse(file, {
worker: true,
step: function (result) {
count++;
console.log(result.data[0])
},
format: "UTF-8"
complete: function (results, file) {//
console.log('parsing complete read', count, 'records.');
}
});
问题不是因为代码,而是因为控制台属性。我不得不更改字体,以便控制台可以正确显示希伯来字母。
所以我从 excel 得到了一个保存为 CSV -UTF-8 文件的 csv 文件 右边在 visual studio 左边在 excel.
当我尝试使用 PapaParse/csv-parser 进行解析时,我仍然看到 > 格式的输出 这意味着编码: PapaParse 尝试:
papa.parse(file, {
worker: true,
step: function (result) {
count++;
console.log(result.data[0])
},
complete: function (results, file) {//
console.log('parsing complete read', count, 'records.');
}
});
csv-reader 尝试:
const csv = require('csv-parser');
const results = [];
fs.createReadStream('Cities.csv')
.pipe(csv())
.on('data', function (datarow) {
results.push(datarow);
})
.on('end', function () {
console.log(results.toString('utf-8");
});
在这两种情况下,输出都是 >cannot read hebrew chars
在我看来,您正在将原始块缓冲区传输到 csv
,而不是使用 UTF-8 编码转换为字符串的结果。你没有告诉 createReadStream
为你处理任何编码工作,所以它会读取原始数据并将它们传递给 csv
函数(因为你正在传递给它)作为 Buffer
实例。
与其读取原始数据并在之后进行转换,不如告诉 createReadStream
您希望它通过其 options parameter:
const csv = require('csv-parser');
const results = [];
fs.createReadStream('Cities.csv', 'utf-8')
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^
.pipe(csv())
.on('data', function (datarow) {
results.push(datarow);
})
.on('end', function () {
// Use `results` here (it's an array of objects according to the
// csv-parser documentation; calling `toString` on it probably isn't
// what you want)
});
你可以试试加上这个:
格式:“UTF-8”
papa.parse(file, {
worker: true,
step: function (result) {
count++;
console.log(result.data[0])
},
format: "UTF-8"
complete: function (results, file) {//
console.log('parsing complete read', count, 'records.');
}
});
问题不是因为代码,而是因为控制台属性。我不得不更改字体,以便控制台可以正确显示希伯来字母。