nodejs的request请求网站代码,获取到的数据为什么是乱码?
如下代码,获取 gsying1474-1.icoc.cc 中的代码,就是乱码,而其他网页获取到的就是正常的
var http=require("http");
var req=http.get({
hostname: 'gsying1474-1.icoc.cc',
port: 80,
path: '/',
method: 'GET',
headers:{
'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
},function(res){
var html = '';
// res.setEncoding('utf-8');
res.on('data',function(chunk){
html += chunk;
});
res.on('end',function(){
//解析html
console.log(html);
});
});```### 问题描述
### 问题出现的环境背景及自己尝试过哪些方法
### 相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
### 你期待的结果是什么?实际看到的错误信息又是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个网站编码的问题,不是utf-8,可能是gb2312之类,需要转码
这个连带英文字母都是乱码,应该是 gzip 的问题吧.
打印了一下 res.headers, 输出是这样的:
可以看到, content-encoding 为 gzip,所得到的数据是经过gzip压缩过的.所以乱码.
至于解决办法....一般是用第三方包请求吧,像request,superagent 之类的包,都能设置 gzip:true,帮你解决这些问题