2017-04-24 132 views
0

我遇到了一個奇怪的問題,導致我的終端的編碼變得瘋狂了,有時需要我每次重啓我的IDE時(我在Mac OS上使用PhpStorm 2017.1.2 X 10.12.4)。 這個項目有很多依賴於我的這個小解析函數,直到現在它像一個魅力,但當我試圖解析一個大的csv文件(大約150k記錄),並試圖console.log每一行,它開始「毛刺」,並使我的整個終端(在IDE內)完全無法讀取。使用NodeJS解析CSV時奇怪的編碼問題

CSV文件被格式化這樣的 -

令牌,AD_GROUP
N000000000089076,BCZ MY - 關鍵字1
N000000000090445,BCZ SG - 關鍵字3
N000000000089102,BCZ MY - 關鍵字47
N000000000090115,BCZ SG - 關鍵字33 [確切]
N000000000087801,BCZ AU - 關鍵字12 - [確切]
N0000 00000088111,BCZ CA - 關鍵字1 - 詞組
N000000000090795,BCZ英國 - 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的控制檯,我可以看到它正確地打印了前幾千行,但之後發生了一些奇怪的事情,它將它的打印編碼更改爲奇怪的東西,並將我的整個外殼更改爲它(附帶一個截圖更好的說明)

messed up encoding in terminal

該屏幕截圖是在我點擊ctrl + c停止console.log循環並返回到終端..但是我的打字編碼也發生了變化,並且您可以看到我嘗試鍵入簡單'ls'在裏面。

回答

0

也許我不明白你的問題非常好,但也許你的問題來自於編碼:

Papa.parse(fs.readFileSync(../dashboard/reports/${file_name},{編碼: 'utf-8'}),

如果這個答案不起作用,你可以把更多關於該文件內容的信息?

+0

我試着切換到utf8,但不幸的是它沒有幫助..沒有關於內容的更多信息我已經在這裏發佈了,所有行看起來都與上面相同,格式化爲兩列,第一個標記爲令牌,ad gro的名稱第二個 - 也許有一些廣告組名稱包含西班牙字母等特殊字符,但它對我以前的分析沒有任何影響,但內容相同。 –

+0

你可以添加一些事情開始瘋狂的行嗎? – Amine

+0

這就是問題所在。我無法真正追蹤它,因爲它將已經記錄的文本更改爲亂碼。是否有使用nodemon將它們全部記錄到文本文件中的選項? –