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.');
        }
    });

问题不是因为代码,而是因为控制台属性。我不得不更改字体,以便控制台可以正确显示希伯来字母。