TextEncoder создает кодировку UTF-8 вместо запроса кодировки - PullRequest
0 голосов
/ 19 мая 2018

В рамках перехода моего расширения Thunderbird на Thunderbird 60 мне нужно переключиться с использования nsIScriptableUnicodeConverter (если вы не знаете Mozilla, неважно, что это) на более популярный и поддерживаемый несколькими браузерами, TextDecoder иTextEncoder.Дело в том, что их поведение не соответствует ожиданиям.

В частности, предположим, что у меня есть строка str, содержащая "ùìåí" (без кавычек, конечно).Теперь, когда я запускаю:

undecoded_str = new TextEncoder("windows-1252").encode(str);

Я ожидаю получить последовательность

F9, EC, E5, ED, 2C

(1-октетное значение windows-1252 для каждого из 5 символов).Но то, что я на самом деле получаю, это:

C3, B9, C3, AC, C3, A5, C3, AD, 2C

, что похоже на кодировку строки в UTF-8.Почему это происходит?

1 Ответ

0 голосов
/ 19 мая 2018

Досадно, что во многих браузерах просто пропала поддержка для кодирования нескольких наборов символов в TextEncoderTextDecoder):

Примечание: используются Firefox, Chrome и Operaиметь поддержку типов кодирования, отличных от utf-8 (таких как utf-16, iso-8859-2, koi8, cp1261 и gbk).Начиная с Firefox 48 (тикет), Chrome 54 (тикет) и Opera 41, нет других доступных типов кодирования, кроме utf-8, чтобы соответствовать спецификации.Во всех случаях передача типа кодировки в конструктор будет игнорироваться, и будет создан utf-8 TextEncoder (TextDecoder по-прежнему допускает другие типы декодирования).

Черт возьми!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...