我遇到一个奇怪的问题,该问题导致终端的编码失效,有点儿要求我每次发生时都重新启动IDE(我在Mac OS X 10.12.4上使用PhpStorm 2017.1.2)。
这个项目对我的这个小解析功能有很大的依赖性,直到现在,它仍然像一个魅力一样运作,但是当我尝试解析一个大的csv文件(大约15万条记录),并尝试对每一行进行console.log记录时,开始“小故障”,使我的整个终端(在思想范围内)完全不可读。

CSV文件的格式如下:

令牌,广告组
N000000000089076,BCZ MY-关键字1
N000000000090445,BCZ SG-关键字3
N000000000089102,BCZ MY-关键字47
N000000000090115,BCZ SG-关键字33 [精确]
N000000000087801,BCZ AU-关键字12-[精确]
N000000000088111,BCZ CA-关键字1-词组
N000000000090795,BCZ UK-Kyeword 89-词组
..等等

我的解析功能看起来像这样-

exports.csv_tokens_parse = function(file_name) {
 console.log('starting to parse '+file_name+'...');

 Papa.parse(fs.readFileSync(`../dashboard/reports/${file_name}`, {encoding: 'binary'}),
 {
    step: function (row) {
      console.log(row.data[0][1]); //displaying the ad_groups column
    }
 });
 return file_arr;
};


运行它并返回到phpstorm的控制台后,我可以看到它正确地打印出了前几千行,但是随后发生了一些奇怪的事情,并且将其打印编码更改为某种奇怪的内容并将整个shell更改为它(屏幕截图已附上,以进行更好的说明)

javascript - 使用NodeJS解析CSV时出现奇怪的编码问题-LMLPHP

屏幕快照是在我按ctrl + c停止console.log循环并返回到终端之后的。.但是我的输入编码也发生了变化,您可以看到我尝试在其中键入一个简单的“ ls”。

最佳答案

也许我不太了解您的问题,但也许您的问题来自编码:

Papa.parse(fs.readFileSync(../dashboard/reports/${file_name},{encoding:'utf8'}),

如果此答案不起作用,是否可以放置有关文件内容的更多信息?

08-16 14:15