CNode

http.get抓取中文内容乱码如何解决

问答
MMyNodeJs__legacy_5588c0ab01d3ce0d73d69098发布于10 年前最后回复10 年前9 回复9818 浏览0 收藏

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

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

查看回复

回复 (9)

J
jingsam#1·10 年前

decodeURIComponent(data)

2
2linziyi2#2·10 年前

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

G
GuangGuo#3·10 年前

https://cnodejs.org/topic/4faf65852e8fb5bc65113403 你需要一本朴灵的 深入浅出Nodejs

A
anotherWill#4·10 年前

node可以设置编码格式。。

D
doerU#5·10 年前

encodeURI(data)

W
weierbufan#6·10 年前

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

W
wssgcg1213#8·10 年前

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

引用 wssgcg1213data += chrunk 这种 buffer 的拼接方式还是不推荐的 乱码有很多种...不知道LZ是哪一种 常见的是源站提供 GBK 编码的字符, node 本身不支持 gbk 解码, 需...

@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的 不知道什么原因

参与回复
登录后即可参与回复。登录