解决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分页类代码分享
Jun 17 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
使用nodejs开发cli项目实例
Jun 03 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 NodeJs
浅谈Node的内存泄露问题
May 06 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编译安装时常见错误解决办法
2015/05/28 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python实现从url中提取域名的几种方法
2014/09/26 Python
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
Django Highcharts制作图表
2016/08/27 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
某公司Java工程师面试题笔试题
2016/03/27 面试题
采购主管工作职责
2013/12/12 职场文书
买房子个人收入证明
2014/01/16 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
爱情保证书大全
2014/04/29 职场文书
债务授权委托书范本
2014/10/17 职场文书
英雄儿女观后感
2015/06/09 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
java设计模式--三种工厂模式详解
2021/07/21 Java/Android