Javascript Конвертировать ANSI в UTF8 - PullRequest
3 голосов
/ 07 июля 2011

Я пытаюсь с помощью этого плагина jquery.csvToTable показать данные из csv на веб-страницу, файл cvs имеет кодировку ansi с японским текстом, но веб-страница имеет кодировку utf8, а js не работает с ansi, как можно конвертировать или если существует другой метод data $.get(csvFile, function(data) { data to utf8, извините за мой плохой английский, большое спасибо!

Ответы [ 3 ]

3 голосов
/ 07 июля 2011

К тому времени, когда вы имеете дело со строкой в ​​JavaScript, вы имеете дело с UTF-16. Браузер должен убедиться, что любые данные, которые он передает в слой JavaScript, были правильно преобразованы.

В этом случае, поскольку вы используете $.get, это означает, что слой ajax должен знать, с чем он имеет дело. Вам нужно будет убедиться, что ваш сервер возвращает правильную информацию о кодировке в ответе HTTP, содержащем файл CSV, чтобы браузер знал, в каком формате находятся символьные данные. Как только вы это сделаете, браузер должен выполнить любое необходимое преобразование от оригинала до UTF-16 для JavaScript.

В частности, если ваш CSV-файл находится в наборе символов Windows-1252 (иногда люди называют это «ANSI», хотя это неверно), это будет заголовок Content-Type, с которым сервер должен возвращать файл:

Content-Type: text/csv; charset=windows-1252

... но если ваш контент японский, я бы не подумал, что он будет в Windows-1252, который (очень ограничен) латинским набором символов. Если вы используете Windows, скорее всего это будет кодовая страница 932 , которая будет:

Content-Type: text/csv; charset=Windows-31J

... или если вы используете * nix, возможно EUC-JP :

Content-Type: text/csv; charset=EUC-JP

Подробнее о кодировках вы можете узнать в этом документе W3C . ( Эта статья Джоэля Спольски также весьма полезна.) Дополнительную информацию о строках JavaScript можно найти в спецификации (но в основном каждый "символ" в строке JavaScript является UTF -16 слово, которое означает, что символы, требующие двух слов, отображаются в виде двух «символов» в строке - не идеально для некоторых текстов, особенно для восточноазиатских, но когда оно определялось, ОЗУ по-прежнему ценно ...)

0 голосов
/ 14 сентября 2015

Я использую следующие функции:

function encode_utf8(s) {
  return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

Извлечено из: http://ecmanaut.blogspot.com.ar/2006/07/encoding-decoding-utf8-in-javascript.html

0 голосов
/ 07 июля 2011

Надеюсь это вам пригодится ↓

http://jsfromhell.com/geral/utf-8

...