node.js使用iconv-lite和zlib解決gzip壓縮和gbk亂碼

 

安裝插件request,iconv-lite。zlib內置。javascript

一、設置請求參數中的encoding爲null,這樣傳入回調函數中的body將是一個buffer。(默認爲utf8編碼)java

二、用zlib.gunzip()方法對body進行解壓,解壓的到的依然是個buffer。函數

request({
	uri: url,
	method: 'GET',
	timeout: 5000,
	encoding: null
}, function(error, response, body){
	if(!error && response.statusCode == 200) {
		if(response.headers['content-encoding'] == 'gzip'){
			zlib.gunzip(body, function(err, dezipped){
				callback(dezipped);
			});
		} else {
			callback(body);
		}
	}
});

 三、將特定編碼的buffer用iconv.decode()方法解碼爲string。編碼

var data = iconv.decode(data, 'gbk');
相關文章
相關標籤/搜索