2015-04-05 2 views
0

Клиент попросил веб-искателя, который анализирует его сайт и генерирует CSV-файл с некоторой информацией с веб-сайта, но у меня проблемы с кодировкой.Кодировка кодировки Javascript

Я осмотрел страницу, и я вижу, что заголовок Content-Type установлен в "text/html; charset=utf-8", а метатег для Content-Type имеет то же значение.

Я использую простую конкатенацию для генерации результатов, как в CONTENT += line + '\r\n'; и, когда будут готовы, я подскажу загрузки файла:

var data = new Blob([CONTENT], { type: 'text/plain; charset=utf-8' }); 
saveAs(data, 'crawler.csv'); 

Я бы ожидать, что кодирование будет правильным, так как все содержимое использует UTF -8, но это не так, и я все равно получаю некорректное кодирование, как-то, как в RADIOFREQUÃNCIA, где он должен читать RADIOFREQUÊNCIA. В большинстве случаев акценты и диакритические знаки заменяются на Ã.

Я пробовал использовать несколько методов кодирования/декодирования, но не имел никакого эффекта. У кого-нибудь есть рекомендации?

+0

Отправляйте данные *, помеченные как физическое кодирование. * Настройка Content-Type на "foo/bar; charset = utf-8" не волшебным образом делает данные UTF-8. (Ваши наблюдения показывают, что вы действительно отправляете данные в виде 8-битной кодировки.) – Tomalak

+0

Я не писал сайт, как я могу узнать, в какой кодировке он действительно находится? –

+0

Вы можете смотреть только на байты, проходящие через провод, и сравнивать их с кодировками. Если заголовок Content-Type соответствует данным, все будет хорошо на стороне клиента самостоятельно, и вы ничего об этом не заметите. Если это не так ... то материал уже сломан на сервере, и на самом деле вы можете сделать это на клиенте. – Tomalak

ответ

0

Как ни странно, использование другого минификатора решило проблему. Я использовал this один, а затем, просто потому, что я решил попробовать this один. Задача решена.

+1

Я рекомендую [Closure Compiler] (http://closure-compiler.appspot.com/home). (Тем не менее, минималист должен по праву не иметь значения, я потратил бы некоторое время на расследование первопричины.) – Tomalak

+0

Я сохраню его в своих закладках. На самом деле этого не должно быть, и я просто испытал, какая головная боль может произойти, когда это произойдет. Мне действительно было любопытно, почему это произошло, но проверка минифицированного кода довольно хлопотная, и у меня нет такого времени, чтобы дать. Ну хорошо =) –