解决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框架Express的模板视图机制分析
Jul 19 NodeJs
用nodejs写的一个简单项目打包工具
May 11 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 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数组去重的函数代码
2013/02/03 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
深入理解Promise.all
2018/08/08 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
详解Python高阶函数
2020/08/15 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
应用数学专业求职信
2014/03/14 职场文书
工程承诺书怎么写
2014/05/24 职场文书
2014年实习期工作总结
2014/11/27 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
南湾猴岛导游词
2015/02/09 职场文书
学校社团活动总结
2015/05/07 职场文书