Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как преобразовать кодировку с windows-1251 на UTF-8 в node.js?

Не пойму почему не работает
Есть страница с charset=windows-1251

Получаю с неё текст при помощи jsdom
�����
Пробую преобразовать

var iconv = new Iconv('windows-1251', 'UTF-8');
var x = iconv.convert(text);
console.log(x.toString());

В итоге получаю кракозябры
пїЅпїЅпїЅпїЅпїЅ


В чем может быть проблема? На странице в хедере указана кодировка именно windows-1251.
  • Вопрос задан
  • 28957 просмотров
Подписаться 3 Оценить 2 комментария
Решения вопроса 1
art1z
@art1z
Программист-многостаночник в EffectiveSoft
Тут проблема не с преобразованием, а с выводом utf-8 текста из ноды по Windows: https://github.com/nodejs/node-v0.x-archive/issues/2190
Если коротко: запусти в консоли chcp 65001 перед запускам процесса node.exe
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@alias_rus
Возникла такая же проблема при получение html через request и fetch. Нашел выход через needle
Ответ написан
Как решили? Тоже такая же проблема.
Ответ написан
Комментировать
@NickKolok
Если нужно определять кодировку, которая неизвестна, то для кириллических текстов вот: https://github.com/nickkolok/node-autodetect-utf8-...
Ответ написан
Комментировать
@NyoNor
http.get(url, (stream) => {
            const w = fs.createWriteStream(`./content/${pathToFile}`);
            w.on('finish', () => {
                callback();
            });
            stream
                .pipe(iconv.decodeStream('win1251'))
                .pipe(iconv.encodeStream('utf8'))
                .pipe(w);
});


У меня работает... iconv ^0.6.3, node v14.17.1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы