乱码问题分类及解决方案
1 使用 cheerio 解析下载下来的html字符串,碰到中文,如果不解析,可以直接添加参数 { decodeEntities: false }:
例如:
var $ = cheerio.load("<h1><p>你好</p><em>Hello,World!</em></h1>");
var cnt = $('h1').html();//<p>你好</p><em>Hello,World!</em>
修改成:
var $ = cheerio.load("<h1><p>你好</p><em>Hello,World!</em></h1>", { decodeEntities: false });
var cnt = $('h1').html();//你好Hello,World!
因为cheerio 本身默认是转实体的,decodeEntities: false 表示不转实体。
2 在请求页面内容的是添加参数 {'Accept-Encoding': ''}
事实上,在网页去请求的时候,为了减少网页请求所消耗的带宽,提高数据传输的速度,通常会把数据进行压缩,就需要用到 ‘Accept-Encoding’,它的值 ‘gzip, deflate, br’,代表的意思是数据压缩采用的编码方式。
通常看我们还需要关注一个