解决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之请求路由概述
Jul 05 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 NodeJs
Nodejs 微信小程序消息推送的实现
Jan 20 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
PHP分页显示制作详细讲解
2006/12/05 PHP
获取URL文件名后缀
2013/10/24 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
初识Node.js
2015/03/20 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
详解Python pygame安装过程笔记
2017/06/05 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python上selenium的弹框操作实现
2020/07/13 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
python drf各类组件的用法和作用
2021/01/12 Python
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
会计岗位职责
2013/11/08 职场文书
产品销售员岗位职责
2013/12/18 职场文书
微博营销计划书
2014/01/10 职场文书
给公司的建议书范文
2014/05/13 职场文书
教室标语大全
2014/06/21 职场文书