Узел.парсер JS Cheerio нарушает кодировку UTF-8
я разбираю свою просьбу с Cheerio так:
var url = http://shop.nag.ru/catalog/16939.IP-videonablyudenie-OMNY/16944.IP-kamery-OMNY-c-vario-obektivom/16704.OMNY-1000-PRO;
request.get(url, function (err, response, body) {
console.log(body);
$ = cheerio.load(body);
console.log($(".description").html());
});
и в качестве вывода я вижу контент, но в нечитаемой странной кодировке:
//Plain body console.log(body) (p.s. russian chars):
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1><p style
// cheerio's console.log $(".description").html()
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY
целевое кодирование ссылки url в формате UTF-8. Так почему Cheerio нарушает мою кодировку?
попытка использовать iconv для кодирования ответа моего тела:
var body1 = iconv.decode(body, "utf-8");
но console.log($(".description").html());
по-прежнему возвращает странный текст.
1 ответов
Cheerio ничего не сломал. HTML, который он выводит, будет отображаться любым браузером точно так же, как вход HTML. Взгляните на этот фрагмент:
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1>
<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1>
это просто случай, что У
является HTML - "сущность" для символа UTF-8 У
, таким же образом, юридическое лицо >
представляет >
.
однако, если вы хотите получить некодированный текст, вы можете установить для false
:
const $ = cheerio.load(
`<h1><span style="font-size: 16px;">Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше</span></h1>`,
{ decodeEntities: false }
);
console.log($('span').html())
// => Уличная 3Мп IP HD камера OMNY - попробуйте найти лучше
.as-console-wrapper{min-height:100%}
<script src="https://wzrd.in/standalone/cheerio@latest"></script>