无法从节点中的csv文件流中读取重音字符

时间:2015-10-21 15:09:22

标签: javascript node.js csv

开始。我目前正在使用npm fast-csv,这是一个非常简单明了的很好的CSV读写器。我试图做的是将它与iconv一起使用来处理“重音”字符和非ASCII字符,并将它们转换为ASCII等效字符或根据字符删除它们。

我当前使用fast-csv进行的过程是通过读取流引入一个块进行处理(以一行形式出现),暂停读取流,处理数据,将数据传输到写入流然后使用回调恢复读取流。 Fast-csv目前知道根据来自读取流的数据格式分离块的位置。

整个过程如下:

line.characters

我目前遇到的问题是我注意到由于某种原因,当我的javascript编译时,它本身并不识别非ASCII字符,因此我不得不使用npm iconv-lite来编码数据流进入可用的东西。然而,这提出了一个更大的问题,因为fast-csv将不再知道由于现在编码的数据而在哪里拆分块(行)。由于我将使用的CSV的大小,这是一个问题;将整个CSV加载到缓冲区然后解码将不是一个选项。

对于如何在不将我自己的CSV解析器写入代码的情况下解决这个问题,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

尝试使用var stream = fs.createReadStream(inputFileName, { encoding: 'binary' }); 读取您的文件以获取编码选项。我不得不阅读一些带有一些重音字符的csv,并且它能正常工作。

{{1}}

答案 1 :(得分:0)

除非我误解,否则您应该可以通过将流上的编码设置为utf-8docs)来解决此问题。

第一行:

var stream = fs.createReadStream(inputFileName, {encoding: 'utf8'});

如果需要:

writableStream = fs.createWriteStream(outputFileName, {defaultEncoding: 'utf8'});