cheeriojs加载html时中文会默认解析成unicode的问题

cheeriojs 解析中文为unicode问题

在使用cheeriojs的时候我发现,每当使用html方法,中文会默认解析成 unicode.

使用方式如下:

var cheerio = require('cheerio');
var $ = cheerio.load('<title>我是中文,我将会被解析成unicode</title>');
console.log($('title').html());

当使用text方法的时候,并不会出现以上问题

var cheerio = require('cheerio');
var $ = cheerio.load('<title>我是中文,我将会被解析成unicode</title>');
$('title').text()

解决

默认配置

当我们load html内容的时候,其实cheerio是有默认配置的. html解析是使用的htmlparser2这个库,所以htmlparser2的配置在cheerio也是适用的.

var cheerio = require('cheerio');
var $ = cheerio.load('<title>我是中文,我将会被解析成unicode</title>',{
    withDomLvl1: true,
    normalizeWhitespace: false,
    xmlMode: false,
    decodeEntities: true
});

修改默认配置

我们只需要将decodeEntities修改成 false,就可以解决我们的问题.

{
    decodeEntities: false
}

像这样

var cheerio = require('cheerio');
var $ = cheerio.load('<title>我是中文,我将不会被解析成unicode</title>',{
    decodeEntities: false
});

本文链接:

https://alili.tech/archive/lbpnt17e1sc/