解决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服务器(3):代码模块化
Dec 18 NodeJs
nodejs中实现路由功能
Dec 29 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
php分页代码学习示例分享
2014/02/20 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
PHP7内核之Reference详解
2019/03/14 PHP
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
javascript时间函数大全
2014/06/30 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Django框架模板注入操作示例【变量传递到模板】
2018/12/19 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
德国电子商城:ComputerUniverse
2017/04/21 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
交通安全教育制度
2014/02/02 职场文书
装修设计师求职信
2014/02/26 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
社团活动总结书
2014/06/27 职场文书
工程承包协议书范本
2014/09/29 职场文书
干部年终考核评语
2015/01/04 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server