文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Nodejs抓取非utf8字符编码的页面

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);
});

有爱

希望本文对你有用 ^_^

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载