2016-04-07 6 views
2

Я генерирую csv с utf-8 с узлом node.js, а затем открываю его в окнах с двойным щелчком. Excel запускается, но некоторые специальные символы (например, Ä, Ö, Ü, ä, ö, ü ...) отображаются неправильно. Я думаю, это связано с неправильной кодировкой. Я сохранил новый csv, созданный с помощью excel. И я вижу, что кодировка - это windows-1252.Преобразование файла csv UTF-8 в считываемый Excel csv

Я много гулял и много пробовал, но никакого решения.

Пытаюсь с помощью комбинации из https://github.com/mathiasbynens/windows-1252 и https://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)); 

Но ничего не работает. Пожалуйста, помогите мне

ОБНОВЛЕНИЕ: Посредством tinkering Я узнал, что эти коды отображаются в виде желаемых символов, но все еще не хватает нижнего края äöü. Кто-нибудь есть идея?

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

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

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

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

Вы должны добавить BOM UTF-8 в CSV для Excel, чтобы распознать его как 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

 Смежные вопросы

  • Нет связанных вопросов^_^