我在抓搜房网数据的时候发现它的html页面编码不是utf8编码,在网上找了下有说使用node-iconv模块的:
http://www.cnblogs.com/fengmk2/archive/2011/05/15/2047109.html
iconv-lite : https://github.com/ashtuchkin/iconv-lite
node-iconv:https://github.com/bnoordhuis/node-iconv
但是我nodev0.6.9用npm安装
node-iconv
的时候老是出错:
no suchenvironment: Release
最后没能找到解决办法,然后又找到了一个叫iconv-lite的模块
按照它的描述,性能比iconv模块还要好,而且用起来也比iconv简单
operation iconv@1.1.3 iconv-lite@0.2.4
----------------------------------------------------------
encode('win1251') ~36 Mb/s ~230 Mb/s
decode('win1251') ~38 Mb/s ~130 Mb/s
然后我就使用的它: npm installiconv-lite
下面来看一下如何使用它:
var http = require('http');
var iconv = require('iconv-lite');
var url=require('url');
var html = "";
var getURL = url.parse('http://bj.soufun.com/');
var req =http.get(getURL, function (res) {
res.setEncoding('binary');//or hex
res.on('data',function (data) {//加载数据,一般会执行多次
html += data;
}).on('end', function () {
var buf=new Buffer(html,'binary');//这一步不可省略
var str=iconv.decode(buf, 'GBK');//将GBK编码的字符转换成utf8的
console.log(str);
})
}).on('error', function(err) {
console.log("http get error:",err);
});