Nodejs抓取非utf8字符编码的页面
时间:2011-05-15 来源:MK2
问题: nodejs目前无法处理非utf8编码以外的字符
在cnodejs用户组,有同学遇到抓取百度页面出现编码问题
由于Buffer.toString(encoding)中encoding只支持utf8编码,所以需要附加模块才能处理此问题
解决:node-iconv 模块
安装:
$ sudo npm install iconv
示例
var http = require('http');
var options = {
host: 'www.baidu.com',
port: 80,
path: '/s?wd=nodejs'
};
var Iconv = require('iconv').Iconv;
http.get(options, function(res) {
console.log("Got response: " + res.statusCode, res.headers);
var buffers = [], size = 0;
res.on('data', function(buffer) {
buffers.push(buffer);
size += buffer.length;
});
res.on('end', function() {
var buffer = new Buffer(size), pos = 0;
for(var i = 0, len = buffers.length; i < len; i++) {
buffers[i].copy(buffer, pos);
pos += buffers[i].length;
}
// 'content-type': 'text/html;charset=gbk',
var gb2312_to_utf8_iconv = new Iconv('GBK', 'UTF-8');
var utf8_buffer = gb2312_to_utf8_iconv.convert(buffer);
console.log(utf8_buffer.toString());
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
有爱
希望本文对你有用 ^_^
相关阅读 更多 +
排行榜 更多 +










