2015-10-30 2 views
0

Input для чтения файла Jade:Проблемы с файлом чтения charset. Как это исправить

input#upload.(type='file', accept="text/xml, .csv") 

и получить в ЯШ:

var file = document.getElementById('upload').files[0]; 
var reader = new FileReader(); 
reader.onloadend = function(e){ 
    var file = e.target.result; 
}; 
reader.readAsBinaryString(file); 

Я получаю строку:

«почты, имя, Ð ¢ Ì «0»

, где ТеÑÑ в последнем элементе в файле - русское слово.

как исправить charset?

ответ

0

Симптом понятен: вы (случайно) сплайсируете содержимое UTF-8 (судя по вашему тегу) во что-то, что представлено как что-то еще (не-UTF-8), следовательно, происходит mojibake.

Убедитесь, что каждый проход содержимого проходит через UTF-8, очищает или сохраняет исходное содержимое байт-байт точно. Это включает настройку заголовков Content-type соответственно (Вероятность: text/html; charset=utf-8).

Настоящая проблема заключается в том, почему рекомендуется использовать UTF-8 для всего, что есть. Настройте свои базы данных для использования UTF-8, настройте свой веб-сервер для обслуживания UTF-8, настройте исходный код в UTF-8, настройте ваши редакторы для сохранения в UTF-8 по умолчанию, настройте свои HTTP-заголовки и метатеги для рекламы UTF-8, не принимайте ничего, что не является UTF-8, или перекодируйте его там, где это возможно. Все, что не является UTF-8, просто требует неприятностей.

Зачем стандартизировать UTF-8, спросите вы? Поскольку это низкий 7-битный диапазон, похоже, выглядит как ASCII, который может создать целый мир различий в функциональной совместимости со сломанными/устаревшими вещами, которые на самом деле не понимают многое другое.

+0

У меня есть шаблон (нефрит), угловой скрипт, пользовательский файл ввода и узел nodejs/expressjs. Все файлы в кодировке UTF-8. – name

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