解决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代码实现计算交社保是否合适
Mar 09 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
nodejs中实现阻塞实例
Mar 24 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
javascript之学会吝啬 精简代码
2010/04/25 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
python selenium循环登陆网站的实现
2019/11/04 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python实现在线翻译
2020/06/18 Python
详解KMP算法以及python如何实现
2020/09/18 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
八年级生物教学反思
2014/01/22 职场文书
优秀教师获奖感言
2014/01/31 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
校园环保建议书
2014/05/14 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python