UDN-企业互联网技术人气社区

板块导航

浏览  : 626
回复  : 6

[Nodejs] nodejs中使用http请求返回值为html时乱码问题

[复制链接]
cat77的头像 楼主
发表于 2017-1-11 15:25:34 | 显示全部楼层 |阅读模式
  今天用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');

  然后查阅官方文档,发现有两种解压方式,一种是同步,另一种是异步。

  我这里就使用异步的方式了。
  1. zlib.unzip(chunk,function(error,res){
  2.   console.log(error);
  3.   console.log(res+"");
  4. });
复制代码

  这里的chunk就是我们的接受到的buffer对象,需要注意的是这个异步的callback有两个参数,第一个好像是错误信息,第二个才是我们需要的html字符串。

  如果需要使用同步的同学,请调用zlib.unzipSync(buffer); ps:表示我测试的时候报错了。Error: unexpected end of file

  好了,到这里,我的问题就完美解决了。

相关帖子

发表于 2017-1-11 15:26:04 | 显示全部楼层
我完全是被标题<<nodejs中使用http请求返回值为html时乱码问题>>吸引过来的
使用道具 举报

回复

发表于 2017-1-11 15:26:05 | 显示全部楼层
鄙视楼下的顶帖没我快,哈哈
使用道具 举报

回复

发表于 2017-1-11 15:26:05 | 显示全部楼层
jq现在应该算是最火的js框架类了吧?确实很强大extjs基于Yahoo UI的扩展,界面布局和效果方面很给力,但就是有点复杂
使用道具 举报

回复

发表于 2017-1-11 22:13:44 | 显示全部楼层
学习
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部