linux环境下,我们可以通过 iconv 这个C++模块来处理Node.JS不支持的字符编码,如GBK,BIG5。
iconv需要依赖native库,这样一来,在一些不支持native模块安装的虚拟主机和windows平台上,我们还是无法安心处理GBK编码。 老外写了一个通过纯Javascript转换编码的模块 iconv-lite 可以实现window下的转换 ,通过npm可以安装此模块,bufferhelper是一个操作buffer的加强类,关于buffer的详细解析,请参考地址:http://www.infoq.com/cn/articles/nodejs-about-buffer 比如抓取baidu.com,
var http = require('http'),
var url = require('url').parse('http://www.baidu.com/');
var iconv = require('iconv-lite');
var BufferHelper = require('bufferhelper');
http.get(url,function(res){
var bufferHelper = new BufferHelper();
res.on('data', function (chunk) {
bufferHelper.concat(chunk);
});
res.on('end',function(){
console.log(iconv.decode(bufferHelper.toBuffer(),'GBK'));
});
})
iconv这个类库在win下不能用, 换iconv-lite吧. 刚好这几天有在弄这个问题. 可以看下https://github.com/tomas/needle (有个iconv分支,我刚发了个issue,已解决, 应该这几天就更新上去了.)
iconv-lite不支持big5的吧
不错,就是这么搞滴。
gbk是罪……
弱问一下,卤煮怎么解析爬下来的东西呢?比如百度首页,是一大段字符串,怎么解析呢?比如我如果要找其中的某个div
jsdom不过那些有点重量级了(在内存中会创建dom树而且还解析js),cheerio是目前性能最好的(不解析js和其他资源)
@TearY 好的,谢谢
iconv模块可以在Windows下用,先装Visual C++
@leizongmin 嗯, 后面发现了。node-gyp这个的github上有注明了必须安装3个东西才能在win下用。
PS: win7下, node x64是不能用jsdom和jquery这2个组件的,因为contextify不支持64位。
3ks, needle很好用。
嗯。果断采用楼主的方法,成功转码,感谢
冒昧问下,你是朴灵吗?
不要再用windows开发了, 那么多坑 怎么说的来着? “在windows上搞开发就像带着脚镣跳舞”
你可以试试
$ npm install nodegrassex
是的。