今天用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时乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
代码实现 解析 window的 lnk文件 得到实际指向的文件.解析的结果中 出现了乱码. 请问如何解决这个乱码? 依赖 输出: 尝试的方案: let buf = new Buffer.from(lnk.expanded.target); let data = iconv.decode(buf, "cp936"); let data2= iconv.decode(lnk.target,"GBK")
本文向大家介绍SpringMVC post请求中文乱码问题解决,包括了SpringMVC post请求中文乱码问题解决的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringMVC post请求中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们在页面难免提交一些中文数据给后台处理,但是发现后台拿到的数据乱码,可以
本文向大家介绍解决python中使用PYQT时中文乱码问题,包括了解决python中使用PYQT时中文乱码问题的使用技巧和注意事项,需要的朋友参考一下 如题,解决Python中用PyQt时中文乱码问题的解决方法: 在中文字符串前面加上u,如u'你好,世界',其他网上的方法没有多去探究,Python的版本也会影响解决方法,故这里只推荐这种。 (有人说用toLocal8bit函数也可以,我试了下,貌似
本文向大家介绍完美解决Get和Post请求中文乱码的问题,包括了完美解决Get和Post请求中文乱码的问题的使用技巧和注意事项,需要的朋友参考一下 对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题 request.setCharacterEncoding("utf-8"); 而对于Get请求,因为请求参数会被附加到地址栏的URL之后,所以不能用上
本文向大家介绍解决Tomcat修改get提交请求乱码问题,包括了解决Tomcat修改get提交请求乱码问题的使用技巧和注意事项,需要的朋友参考一下 1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 ***************form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 修改web.xml,增加编码过滤器,如
本文向大家介绍JQuery异步获取返回值中文乱码的解决方法,包括了JQuery异步获取返回值中文乱码的解决方法的使用技巧和注意事项,需要的朋友参考一下 用jqgrid异步获取列表值,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了乱码。 服务器端已经编码过了(UTF-8编码)。开始一直怀疑是客户端的问题,比如客户端和服务器端编码不