node http代理请求,回来的数据乱码怎么破!�3i������Gq4���΅O�$�R%�r��jt�)�g�$�&���
发布于 10 个月前 作者 duzitengg 1379 次浏览 来自 问答

�3i������Gq4���΅O�$�R%�r��jt�)�g�$�&���<.�W��ď��q�?��8鬒ay����6���7o�o�&�(��vKw�t� c�|NU3}D�����X�F��S\��x��N�UrO�r6�-�!n4�����ˏGӇ�E<��G�E�_%����r�XF�������m�8�D�q�QY���ܬ��h�?ҥ��|<�c~�iu6��K~;����hNO�=��Mw��T�_%�d�n?��y���������~P,To�Ҥ���,G���N1�>.&����H����ҋF�U�?�TG�ê��<>$(��z��`�,� � ME�Q]�+��2�l��J�?�R�J�� �h<u��Sרמ���Ϥ��S�ea�nDƅ ��ѯ���o�����������}����׿w���𾥍~}�<Dž� �v�쎦��Q��� ��/�׼yQ�x�vp�7<>=�G�GI�^�}��=>�Nj�xvR~܎V����������B�E�j��G���A/�?<\�V�A{c8��yi8[LJ�qi<:�D��Ѵ];�G��hz�o��2)�����4�Z\gc89�ϖ#�=m�]��1 $�S��q<L�.�O{�� ^�kg��S���Z��_��O5���.����Ub���9��q��^�ٮ�f4�Ѵ� m�h��̫ܛ%�lB��?���1�W�-�����o�ܞM� �P�M�[�ƫ$>���[ns4���� 9��;��-В�Njz1�G�� ��]�p��_��z��v,h���>w�1Z4�΢?�4�l�ܹԩ���p���TT����r>��GSЬ�����1��ͳ���\Nf��6�FjdT�QON� :��������{�����C� � 代码如下: const http = require(‘http’); const iconv = require(‘iconv-lite’); let op={ host :‘127.0.0.1’, port :‘8888’, method : ‘GET’, path : ‘/’, gzip:true, headers:{ ‘host’ : ‘www.baidu.com’ ,‘scheme’ : ‘https’ ,‘version’ : ‘HTTP/1.1’ ,‘Accept’ : ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8’ ,‘Accept-Encoding’ : ‘gzip, deflate, sdch’ ,‘Accept-Language’ : ‘zh-CN,zh;q=0.8’ ,‘Cache-Control’ : ‘no-cache’ ,‘connection’ : ‘keep-alive’ } }; let req=http.request(op, function(res){ console.log('STATUS: ’ + res.statusCode); console.log(‘HEADERS: ’ + JSON.stringify(res.headers)); console.log(’ '); res.on(‘data’,function(data){ console.log('BODY: ’ + data); }); }); req.on(‘error’,function(e){ console.log('ERRPR: '+e.message); }); req.end();

这个输出: console.log('BODY: ’ + data); 众位大神,这样的乱码怎么破,试了好多办法都不行!请赐教!

8 回复

这些乱码,看起来是对象

@zhaixg 这你都能看出来,求破解!

{
	"headers": {
		"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8;charset=UTF-8"
	}
}

试试指定编码

可能是 Accept-Encoding 问题,把 ,‘Accept-Encoding’ : ‘gzip, deflate, sdch’ 去掉或者使用 zlib 对 data 解压。

PS:可以把 response 的 Content-Encoding 打印出来看下

赞同4楼。 曾经请求过一个接口,返回的数据总是乱码。把Accept-Encoding改成sdch或者干脆去掉就好了。

一般是编码的问题,需要转码, 下面给你写了个示例

const iconv = require(‘iconv-lite’); const request = require(‘request-promise’);

(async function () { let options = { uri: ‘https://www.baidu.com/’, headers: { }, encoding: null, timeout: 1500, transform: function (body) { return iconv.decode(body, ‘utf8’); } }; let response = await request(options); console.log(response); })();

body的是buffer对象吧;得转换成对象。害有可能是编码

正向代理还是反向代理 都有很现成的模块 基本开箱就用 不用写什么代码

回到顶部