2016-04-07 79 views
2

我使用node.js生成utf-8編碼的csv,然後通過雙擊在窗口上打開它。 Excel開始,但某些特殊字符(如Ä,Ö,Ü,ä,ö,ü...)未正確顯示。我認爲這是由於錯誤的編碼。我保存了一個用excel創建的新csv。我看到編碼是windows-1252。將UTF-8 csv文件轉換爲Excel可讀csv

我GOOGLE了很多,並嘗試了很多,但沒有解決方案。

我嘗試使用的 https://github.com/mathiasbynens/windows-1252https://github.com/kvz/phpjs/tree/master/functions/xml

data = helper.utf8_encode(data); 
data = helper.utf8_decode(data); 
data = windows1252.encode(data); 
data = windows1252.decode(data); 
data = helper.utf8_encode(windows1252.encode(data)); 
data = helper.utf8_encode(windows1252.decode(data)); 
data = helper.utf8_decode(windows1252.encode(data)); 
data = helper.utf8_decode(windows1252.decode(data)); 
data = windows1252.encode(helper.utf8_encode(data)); 
data = windows1252.decode(helper.utf8_encode(data)); 
data = windows1252.encode(helper.utf8_decode(data)); 
data = windows1252.decode(helper.utf8_decode(data)); 

但沒有任何工程的組合。請幫我

更新: 通過修補程序,我發現這些代碼顯示爲希望的字符,但仍然缺少lowercasedäöü。有人有任何想法?

\u0101 => Ä 
\u010D => Ä 
\u011D => Ä 
\u0120 => Ä 

\u0581 => Ö 
\u058D => Ö 
\u058F => Ö 
\u0590 => Ö 
\u059D => Ö 
\u05A0 => Ö 

\u0701 => Ü 
\u070D => Ü 
\u070F => Ü 
\u0710 => Ü 
\u071D => Ü 
\u0720 => Ü 

\u07C1 => ß 
\u07CD => ß 
\u07D0 => ß 
\u07DD => ß 
\u07E0 => ß 
+0

你需要一個UTF-8 BOM添加到Excel的CSV格式承認它作爲UTF-8。請參閱http://stackoverflow.com/questions/17879198/adding-utf-8-bom-to-string-blob –

+0

不起作用,Ü顯示爲 – Denni007

回答

0

我不是通過回答完全滿意,因爲我得到與npm install iconv命令的警告。不過,這應該解決您的問題:

const Iconv = require('iconv').Iconv; 
const fs = require('fs'); 
const iconv = new Iconv('utf8', 'utf16le'); 

let csvContent = 'ÉëÜè whatever you want'; 
fs.writeFileSync('test.csv', iconv.convert(csvContent)); 
+0

發現我的警告問題:https://github.com/nodejs/node-gyp/issues/942 我現在很滿意☺️ – herve