nodejs的request请求网站代码,获取到的数据为什么是乱码?

发布于 2022-09-11 18:59:09 字数 714 浏览 12 评论 0

如下代码,获取 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情绪失控 2022-09-18 18:59:09

这个网站编码的问题,不是utf-8,可能是gb2312之类,需要转码

别靠近我心 2022-09-18 18:59:09

这个连带英文字母都是乱码,应该是 gzip 的问题吧.

打印了一下 res.headers, 输出是这样的:

{ 'content-type': 'text/html; charset=UTF-8',
  'transfer-encoding': 'chunked',
  connection: 'close',
  'fai-w-flow': '2022057058',
  'fai-w-aid': '4625551',
  date: 'Mon, 08 Apr 2019 01:32:42 GMT',
  'cache-flow': '4325380074',
  'content-encoding': 'gzip',
  'fai-cache-status': 'NO_CACHE',
  'vps-cache': 'no',
  p3p: 'CP=CAO PSA OUR',
  server: 'nginx' }

可以看到, content-encoding 为 gzip,所得到的数据是经过gzip压缩过的.所以乱码.
至于解决办法....一般是用第三方包请求吧,像request,superagent 之类的包,都能设置 gzip:true,帮你解决这些问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文