今天用nodejs进行http请求时返回的数据是一个html文件,然后我还是按照以前解析json数据的方法。果不其然报错了:SyntaxError: Unexpected token  in JSON at position 0

没办法,只好换一种方法,将接受到的Buffer对象toString,然后打印出来发现是乱码。

第一感觉是编码问题,google一下然后看官方文档,总结三种方法:

1、toString 加编码格式作为参数。

2、使用iconv-lite 改变编码。

3、使用cheerio来加载html。

奈何上面三种方法都不是我错误的地方,然后看到cnode里面有个人有相似的问题,虽然不尽相同,但是下面回答的人中有人提到了使用gzip压缩,收到后不解压会导致乱码,然后在我的请求头中果然发现了gzip压缩 = =手动捂脸。

知道了问题所在,那么解决起来就很方便了。

首先让我们来npm install zlib 一下;

然后在头部引入 var zlib = require('zlib');

然后查阅官方文档,发现有两种解压方式,一种是同步,另一种是异步。

我这里就使用异步的方式了。

zlib.unzip(chunk,function(error,res){

console.log(error);

console.log(res+"");

});

这里的chunk就是我们的接受到的buffer对象,需要注意的是这个异步的callback有两个参数,第一个好像是错误信息,第二个才是我们需要的html字符串。

如果需要使用同步的同学,请调用zlib.unzipSync(buffer); ps:表示我测试的时候报错了。Error: unexpected end of file

好了,到这里,我的问题就完美解决了。

以上这篇解决nodejs中使用http请求返回值为html时乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

接口返回html页面乱码,解决nodejs中使用http请求返回值为html时乱码的问题相关推荐

  1. java http请求 乱码_怎么解决java中的http请求乱码

    怎么解决java中的http请求乱码 发布时间:2020-06-23 20:00:11 来源:亿速云 阅读:90 作者:元一 怎么解决java中的http请求乱码?针对这个问题,今天小编总结了这篇文章 ...

  2. 解决ionic 中 $ionicHistory.goBack()无法返回问题

    解决ionic 中 $ionicHistory.goBack()无法返回问题 这种解决方法目前只适合用了 这一组件的 在下一级中包一个div,如下图:

  3. postman简单教程,如何在请求中引用上次请求返回的值

    做接口测试,一定会遇到这种情况,需要拿上次请求的值在本次请求中使用,比如,我们去测试一个东西,要去登录才能做其他的操作,需要拿到登录返回数据中的某些字段,比如,token啊等... 如果发一次请求,就 ...

  4. 在Pycharm中对字典的键值作更新时提示“This dictionary creation could be rewritten as a dictionary literal ”的解决方法

    在Pycharm中对字典的键值作更新时提示"This dictionary creation could be rewritten as a dictionary literal " ...

  5. 爬取html数据中文乱码,解决PHP中file_get_contents抓取网页中文乱码问题

    根据网上有朋友介绍说原因可能是服务器开了GZIP压缩. 下面是用firebug查看我的博客的头信息,Gzip是开了的. 请求头信息原始头信息 代码如下 复制代码 Accept text/html,ap ...

  6. java build返回空值_将来与Flutter中的FutureBuilder一起返回null

    我想使用FutureBuilder来检查url是否是png图像,然后构建一个或两个图像(在列表中) . 但不知何故,当我打印它时,Future总是返回null ... 结果是应用程序总是使用两个Cac ...

  7. dw写出来的php乱码,解决DW中的乱码问题

    Dreamweaver出现乱码,大致为两种情况: 一是没有标明主页制作所用的文字,这种情况下很简单就可以解决,在区加上即可. 二是你新加装了字体,诸如文鼎酷字体之类.这样的话,你每次新建一张网页,都要 ...

  8. 如何解决ACCESS中select TOP语句返回全部记录问题?(转)

    原文: http://www.tinyu.net/blog/blogview.asp?logID=470 如果在查询TOP语句的后面使用Order  by ,而且Order by字段中有重复值的话,那 ...

  9. ionic3开发系列——从多重子页面返回根页面的解决方法

    最近开发ionic项目,因为跳转的子页面太多,回到根页面如果是点击每个页面的back按钮则用户体验度太低,查看ionic官方文档,突然看到NavController(官方文档)包含popToRoot( ...

最新文章

  1. python3 url 提取 ip 端口 协议
  2. Balanced Binary Tree
  3. 每天一道LeetCode-----判断一个数是否是happy number(每一位的平方和最终为1)
  4. linux内核定时器死机,浅析linux内核中timer定时器的生成和sofirq软中断调用流程
  5. 校招刷题---java选择题笔记05
  6. asp.net2.0学习历程 菜鸟到中级程序员的飞跃[z转]
  7. 【基于JXTA的P2P应用开发】
  8. Unity实现安卓虚拟摇杆多点触控
  9. 变位齿轮重合度计算公式_齿轮变位系数的优化选择
  10. vs2013 产品密钥 亲测有效
  11. 华为USG6000V防火墙的初始密码及修改密码的操作
  12. 于的繁体字有几种写法_人字繁体字有几种写法
  13. kubernetes学习总结-9Kubernetes的存储机制
  14. 几何均数怎样用计算机算,算术均数与几何均数的意义及计算方法
  15. 用键盘输入一位整数,当输入1~7时,显示对应的英文星期名称的缩写。
  16. VUE游戏开发:使用Box2D模拟球体的飞行和撞击特效
  17. 左连接的表中有多条数据如何只取一条(最大或最小)
  18. 云免流usb共享电脑_云免流usb共享电脑
  19. 项目实战:如何构建知识图谱
  20. 有主力资金活跃迹象的三大板块

热门文章

  1. MIKE 21 教程 2.3 水动力模块教学:求解方程与参数设置(Solution Technique),水深校正设置(Depth Correction)
  2. ubuntu 通过脚本使用firefox浏览器批量快速打开网页
  3. 锁相环(PLL)的工作原理(转载)
  4. 苏州企业认定为高新技术企业后就可以享受所得税优惠吗
  5. linux安装cmake
  6. java中的native方法性能到底怎么样?
  7. 基于matlab系统辨识工具箱,基于matlab的识别系统
  8. STM32之STM Studio使用
  9. griffin measure metrics无法自动汇总报告结果的问题
  10. 优化函数SGD/AdaGrad/AdaDelta/Adam/Nadam