解决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 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
NVM安装nodejs的方法实用步骤
Jan 16 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
详解NodeJS模块化
Jun 15 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php实现按照权重随机排序数据的方法
2015/01/09 PHP
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
微信小程序日历效果
2018/12/29 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
业务主管岗位职责范本
2013/12/25 职场文书
人力资源经理自我评价
2014/01/04 职场文书
财政专业求职信范文
2014/02/19 职场文书
医学检验专业自荐信
2014/09/18 职场文书
本溪关门山导游词
2015/02/09 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL