Декодирование 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 использовать определенную кодировку даже если сервер искажает кодировку).