解决nodejs中使用http请求返回值为html时乱码的问题

 更新时间:2017年02月18日 09:16:22   投稿:jingxian  
下面小编就为大家带来一篇解决nodejs中使用http请求返回值为html时乱码的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

今天用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时乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Angular(5.2->6.1)升级小结

    Angular(5.2->6.1)升级小结

    今天小编就为大家分享一篇关于Angular(5.2->6.1)升级小结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • AngularJs根据访问的页面动态加载Controller的解决方案

    AngularJs根据访问的页面动态加载Controller的解决方案

    这篇文章主要介绍了AngularJs根据访问的页面动态加载Controller的解决方案,需要的朋友可以参考下
    2015-02-02
  • Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例

    Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例

    这篇文章主要介绍了Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • AngularJS初始化静态模板详解

    AngularJS初始化静态模板详解

    这篇文章主要为大家介绍了AngularJS初始化静态模板,AngularJS初始化静态模板有两种方式,一是通过ng-app来自动初始化模块,也可以通过angular.bootstrap(document, [module])手动启动应用,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • angularJs提交文本框数据到后台的方法

    angularJs提交文本框数据到后台的方法

    今天小编就为大家分享一篇angularJs提交文本框数据到后台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Angular环境搭建及简单体验小结

    Angular环境搭建及简单体验小结

    Angular基于TypeScript和react、vue相比 Angular更适合中大型企业级项目,本文通过实例代码给大家分享Angular环境搭建及简单体验,感兴趣的朋友跟随小编一起学习吧
    2021-05-05
  • Angular实现的内置过滤器orderBy排序与模糊查询功能示例

    Angular实现的内置过滤器orderBy排序与模糊查询功能示例

    这篇文章主要介绍了Angular实现的内置过滤器orderBy排序与模糊查询功能,涉及AngularJS过滤器、排序及字符串遍历、查询等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • AngularJS中的$parse服务与$eval服务用法实例

    AngularJS中的$parse服务与$eval服务用法实例

    这篇文章主要介绍了AngularJS中的$parse服务与$eval服务用法,结合实例形式分析了AngularJS中$parse服务与$eval服务的功能、使用方法与相关注意事项,需要的朋友可以参考下
    2023-05-05
  • AngularJS 中文API参考手册

    AngularJS 中文API参考手册

    本文主要介绍AngularJS API,这里对AngularJS的指令,事件,全局API等做中文翻译,希望能帮助有需要的小伙伴
    2016-07-07
  • angularjs 源码解析之scope

    angularjs 源码解析之scope

    $scope 的使用贯穿整个 Angular App 应用,它与数据模型相关联,同时也是表达式执行的上下文.有了 $scope 就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新 $scope,同样的 $scope 发生改变时也会立刻重新渲染视图.
    2016-08-08

最新评论