解决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写的一个简单项目打包工具
May 11 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
nodejs基础知识
Feb 03 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
nodejs简单抓包工具使用详解
Aug 23 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调用JAVA的WebService简单实例
2014/03/11 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
python3 读写文件换行符的方法
2018/04/09 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
Python装饰器原理与用法分析
2018/04/30 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
IRO美国官网:法国服装品牌
2018/03/06 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
python数字类型和占位符详情
2022/03/13 Python