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'));
});
})
15 回复
iconv这个类库在win下不能用, 换iconv-lite吧. 刚好这几天有在弄这个问题. 可以看下https://github.com/tomas/needle (有个iconv分支,我刚发了个issue,已解决, 应该这几天就更新上去了.)
@leizongmin 嗯, 后面发现了。node-gyp这个的github上有注明了必须安装3个东西才能在win下用。
PS: win7下, node x64是不能用jsdom和jquery这2个组件的,因为contextify不支持64位。