Задать вопрос

Как конвертировать с windows-1251 в utf-8?

Пробую парсить с сайта у которого указана кодировка:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

С помощью модуля iconv пробую перекодировать и всеравно получаются кракозябры: пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ

Мой код:
var request = require('request');
var cheerio = require('cheerio');
var Buffer = require('buffer').Buffer;
var Iconv  = require('iconv').Iconv;
var iconv = new Iconv('CP1251','UTF-8');

request(url, function(error, response, body){
        var $ = cheerio.load(body);
        var str = $('#selector').text();

        console.log(iconv.convert(str).toString()); // кракозябры: пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ 
});


P.S. Когда пробую передать елемент с английским текстом то все правильно - отображается английский текст с правильной кодировкой.
  • Вопрос задан
  • 14673 просмотра
Подписаться 3 Средний 5 комментариев
Решения вопроса 1
@vshvydky
Попробуйте вот так
установка: npm install iconv-lite

iconv = require('iconv-lite');

result = iconv.encode (iconv.decode (new Buffer (body, 'binary'), 'win1251'), 'utf8'));

Сам еще не проверял, не до этого было.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
glebovgin
@glebovgin
Full Stack Web Developer
Вот тут подсказывают такое решение:

body = new Buffer(body, 'binary');
conv = new iconv.Iconv('windows-1251', 'utf8');
body = conv.convert(body).toString();
Ответ написан
Ваш ответ на вопрос

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

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