月度归档:2016年07月

Nodejs 处理gb2312内容乱码问题

在使用cheerio处理request模块返回的gb2312网页出现了乱码,从开始一直排查问题,一直排查到request、cheerio都有问题。

var request = require('request');
var iconv = require('iconv-lite');
var cheerio = require('cheerio');

request({
    encoding: null,
    url: 'http://www.qq.com'
}, function(error, response, body) {
     var html = iconv.decode(body, 'gb2312');
    var $ = cheerio.load(html, { decodeEntities: false} );

    ....................................

    }
});

 

首先request会进行一次转码,这里需要设置request不转码,然后使用iconv-lite插件把接收的数据解码为gb2312,然后再次使用cheerio解析接收到的数据为dom,并且设置编码,下面为详细的数据。