当前位置:首页 > 日记 > 正文

解决nodejs中使用http请求返回值为html时乱码的问题

解决nodejs中使用http请求返回值为html时乱码的问题

今天用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时乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

JS中跳出循环的示例代码

JS中跳出循环的示例代码

示例代码,跳出循环,电脑软件,JS,1、for循环中我们使用continue;终止本次循环计入下一个循环,使用break终止整个循环。2、而在jquery中 $.each使用return true 终止本次循环计入下一个循环,return false终止整个循环。 函数返回值跟此处无关例…

qq个性签名火星文情侣

qq个性签名火星文情侣

文情,火星,个性签名,大全,电脑软件,  一句个性签名火星文情侣:向全世界宣布我是最幸福的,因为有你在。下面小编给大家分享了关于qq个性签名火星文情侣,希望你喜欢。qq个性签名火星文情侣大全1) 向全世界宣布我是最幸福的,因为有你在2) 向全世…

详解nodejs微信公众号开发——1.接

详解nodejs微信公众号开发——1.接

微信公众号,详解,电脑软件,nodejs,接入微信公众号是开发的第一步,万事开头难,走好第一步,后面的路就更宽广。1.公众平台测试帐号的使用登录微信公众平台,由于很多开发人员并没有认证的的微信公众号,所以比较折中的方式是使用公众平台测试帐号来…

基于AGS JS开发自定义贴图图层

基于AGS JS开发自定义贴图图层

贴图,图层,自定义,电脑软件,AGS,1.前言假设一个景区有多张图片需要在地图上展示,并且随着地图的缩放而缩放(不是单纯的以气泡来展示)。如果利用传统方案,则是我们首先将图片纠正赋予地理信息,然后根据地图级别进行切图,最后以瓦片的形式叠加至地…

怎样设置word默认模板设置word默认

怎样设置word默认模板设置word默认

模板,默认,设置,方法,电脑软件,  在工作中经常使用到word,在公司中有相应的格式规范,每次编辑文件时都需要调整一下格式,感觉会有点麻烦;如果调整一下word的默认模板的格式,以后编辑文件时调整的格式就相对少了很多,省时又省力。下面由小编为…

excel图表添加标题的方法步骤图

excel图表添加标题的方法步骤图

图表,方法,步骤,教程,标题,  Excel是三大办公软件之一的一个软件,他经常用于数据的整理、分析、以及对比等。而有很多时候需要用到Excel里的图表的功能并且为其添加标题。下面是小编为大家带来的excel图表添加标题的方法,相信对你会有帮助…

Javascript面试经典套路reduce函数

Javascript面试经典套路reduce函数

函数,套路,经典,电脑软件,Javascript,今天在偶然间查看到了一段代码,代码使用了很短的篇幅完成了字符串统计相同字符次数这个经典面试题,其中用到了reduce这个方法,网上查了查,没有查到什么有价值的东西,导致浪费了我一些时间才看懂,现将我的思路…

word怎么删除单元格word删除单元格

word怎么删除单元格word删除单元格

删除,方法,单元格,电脑软件,word,  人们在使用Word2010制作表格时,有时会遇到需要删除某个单元格的情况。那么下面就由小编给大家分享下word删除单元格的技巧,希望能帮助到您。word删除单元格方法一步骤一:选择好你要删除的表格word删除单元…

简单实现JS上传预览功能

简单实现JS上传预览功能

上传,简单实现,功能,电脑软件,JS,js实现上传图片预览功能思路是获取上传图片本地路径,再加载到页面中实现上传预览 HTML代码<div class="upload"> <input type="button" class="btn" onclick="browerfile.click()" value="上传…

JavaScript实现弹出广告功能

JavaScript实现弹出广告功能

弹出,功能,广告,电脑软件,JavaScript,废话不多说了,直接给大家贴代码了,具体代码如下所示:<span style="white-space:pre"> </span>var i=0;//记录次数 var timer;//定时器id //设置弹出广告 onload=function(){ //间隔四秒展示一次…

bootstrap插件treeview实现全选父

bootstrap插件treeview实现全选父

父节点,插件,子节点,全选,功能,项目需要实现权限管理,使用前端框架bootstrap,所以就直接选用了bootstrap的treeview扩展插件。先上图:选中父节点时,父节点下所有子节点也都全部选中,看代码1、HTML代码<h2>TreeView Checkable</h2><div id="tree…

使用jquery给新生的th绑定hover事

使用jquery给新生的th绑定hover事

事件,绑定,实例,新生,电脑软件,这是昨天在做一个动态的table时遇到的一个小问题,table的th需要让鼠标在移入和移出时显示颜色变化,之前th是固定写死的,直接可以用jquery的hover()方法来实现。现在th需要用js/ajax来动态生成加载到页面,用hover(…