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


Posted in NodeJs onFebruary 18, 2017

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

NodeJs 相关文章推荐
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 #NodeJs
详解nodejs中exports和module.exports的区别
Feb 17 #NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 #NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 #NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 #NodeJs
Nodejs实现短信验证码功能
Feb 09 #NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 #NodeJs
You might like
php中防止伪造跨站请求的小招式
2011/09/02 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
javascript 一些用法小结
2009/09/11 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
秋季运动会广播稿
2014/02/22 职场文书
干部鉴定材料
2014/05/18 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
陕西导游词
2015/02/04 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
导游词之上海豫园
2019/10/24 职场文书
关于python中模块和重载的问题
2021/11/02 Python