解决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,QueryString,Path)模块
Jan 13 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
详解Nodejs之npm&package.json
Jun 15 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 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关联数组的10个操作技巧
2013/01/21 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
php表单处理操作
2017/11/16 PHP
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
javascript 操作符(~、&、|、^、)使用案例
2014/12/31 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
vue中动态添加class类名的方法
2018/09/05 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Python API len函数操作过程解析
2020/03/05 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
小学阳光体育活动总结
2014/07/05 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
男方婚礼答谢词
2015/01/20 职场文书
英文道歉信
2015/01/20 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
python b站视频下载的五种版本
2021/05/27 Python