解决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 07 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
nodeJS微信分享
Dec 20 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
基于nodejs res.end和res.send的区别
May 14 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
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
两款万能的php分页类
2015/11/12 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
PHP微信分享开发详解
2017/01/14 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
js图片上传的封装代码
2017/08/01 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
详解python3中socket套接字的编码问题解决
2017/07/01 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Python3多线程操作简单示例
2018/05/22 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
教师读书笔记
2015/06/29 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js