gzip
可能是需要开启gzip: true
1 | request({url, gzip: true}); |
编码
buffer decode
可以考虑使用iconv-lite
转换buffer。request设置encoding: null
时,会返回buffer形式的body。
1 | request({url, gzip: true, encoding : null}, (err, res, body) => { |
有个别网站编码不统一,时而gb2312时而utf8,这种情况需要自己判断处理。
可以参考cnode的回帖——
先请求下来 Buffer, 也就是 request 的时候指定 encoding: null ,得到 Buffer, 用ASCII解码前一千个字符,用正则,匹配出 ; charset=(\w+)”,得到正确的 charset, 再用 iconv-lite 解码出全部的 buff。
stream pipe
简化一下过程,iconv-lite
也支持pipe
1 | request(url).pipe(iconv.decodeStream(code)); |
Demo
1 | const request = require('request'); |