开始。我目前正在使用npm fast-csv,这是一个非常简单明了的很好的CSV读写器。我试图做的是将它与iconv一起使用来处理“重音”字符和非ASCII字符,并将它们转换为ASCII等效字符或根据字符删除它们。
我当前使用fast-csv进行的过程是通过读取流引入一个块进行处理(以一行形式出现),暂停读取流,处理数据,将数据传输到写入流然后使用回调恢复读取流。 Fast-csv目前知道根据来自读取流的数据格式分离块的位置。
整个过程如下:
line.characters
我目前遇到的问题是我注意到由于某种原因,当我的javascript编译时,它本身并不识别非ASCII字符,因此我不得不使用npm iconv-lite来编码数据流进入可用的东西。然而,这提出了一个更大的问题,因为fast-csv将不再知道由于现在编码的数据而在哪里拆分块(行)。由于我将使用的CSV的大小,这是一个问题;将整个CSV加载到缓冲区然后解码将不是一个选项。
对于如何在不将我自己的CSV解析器写入代码的情况下解决这个问题,有什么建议吗?
答案 0 :(得分:1)
尝试使用var stream = fs.createReadStream(inputFileName, { encoding: 'binary' });
读取您的文件以获取编码选项。我不得不阅读一些带有一些重音字符的csv,并且它能正常工作。
{{1}}
答案 1 :(得分:0)
除非我误解,否则您应该可以通过将流上的编码设置为utf-8
(docs)来解决此问题。
第一行:
var stream = fs.createReadStream(inputFileName, {encoding: 'utf8'});
如果需要:
writableStream = fs.createWriteStream(outputFileName, {defaultEncoding: 'utf8'});