Декодирование cp1251 в UTF-8 в JavaScript

Как декодировать cp-1251 в UTF-8 в JavaScript?

cp-1251 из потока данных, который требуется декодировать со стороны клиента js.

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

1 ответ

(Предполагая, что под "UTF-8" вы подразумевали строки JS в их собственной кодировке...)

В зависимости от формата, в котором находятся ваши данные "cp-1251", и в зависимости от браузеров, которые вы должны поддерживать, вы можете выбрать один из:

  • API TextDecoder.decode () (декодирует последовательность октетов из типизированного массива, например Uint8Array) - если вы используете веб-сокеты, вы можете получить ArrayBuffer из него для декодирования.
  • https://github.com/mathiasbynens/windows-1251 работает над тем, что он называет "байтовыми строками" (JS Stringс состоящий из символов, таких как \u00XYгде 0xXY - закодированный байт.
  • создайте таблицу декодирования самостоятельно ( пример)

Обратите внимание, что в большинстве случаев (хотя и не на таком низком уровне, как веб-сокеты), может быть проще прочитать данные в правильной кодировке, прежде чем они будут представлены в виде строки JS (например, вы можете заставить XMLHttpRequest использовать определенную кодировку даже если сервер искажает кодировку).

Другие вопросы по тегам