http.get抓取中文内容乱码如何解决
发布于 8 年前 作者 MyNodeJs 8847 次浏览 来自 问答

如题 http.get(‘url’, function(res) { var data = ‘’; res.on(‘data’, function(chrunk) { data += chrunk; }); res.on(‘end’, function() { console.log(data); }); });

我也用buffer拼接了,还是不行

9 回复

decodeURIComponent(data)

我没遇到这种问题,不过把data转码下就好了吧

node可以设置编码格式。。

encodeURI(data)

改一下编码格式就好了。。。

data += chrunk 这种 buffer 的拼接方式还是不推荐的 乱码有很多种…不知道LZ是哪一种 常见的是源站提供 GBK 编码的字符, node 本身不支持 gbk 解码, 需要用 iconv-lite/iconv 库转成 utf-8

@wssgcg1213 var http = require(‘http’); var iconv = require(‘iconv-lite’);

http.createServer(function(request, response) { http.get(‘http://news.qq.com/’, function(res) { var html = []; var len = 0;

	res.on('data', function(chrunk) {
		html.push(chrunk);
		len += chrunk.length;
	});

	res.on('end', function() {
		var data;

		response.writeHead(200, {'Content-Type': 'text/html;charset=UTF-8'});
		data = Buffer.concat(html, len);
		data = iconv.decode(data, 'gb2312');
		response.end(data);
	});
});

}).listen(8888); 我这样写的,有一部分乱码,data = iconv.decode(data, ‘gb2312’);这儿改成utf-8反而不行,查看的网页源代码,网页是utf-8的 不知道什么原因

回到顶部