如题 http.get(‘url’, function(res) { var data = ‘’; res.on(‘data’, function(chrunk) { data += chrunk; }); res.on(‘end’, function() { console.log(data); }); });
我也用buffer拼接了,还是不行
decodeURIComponent(data)
我没遇到这种问题,不过把data转码下就好了吧
https://cnodejs.org/topic/4faf65852e8fb5bc65113403 你需要一本朴灵的 深入浅出Nodejs
node可以设置编码格式。。
encodeURI(data)
改一下编码格式就好了。。。
@weierbufan怎么改?
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的 不知道什么原因