我正在尝试使用请求模块访问非utf-8网站.对此请求的响应是乱码.
var request = require('request'); request('http://www.alc.co.jp/',function (error,response,body) { if (!error && response.statusCode == 200) { console.log(body) // Print the web page. } });
即使在将编码选项设置为Shift_JIS之后,我也看到了乱码的日文文本.
解决方法
您需要自己进行转换.下面的示例代码使用node-iconv.
var Iconv = require('iconv').Iconv; var request = require('request'); request({ uri: 'http://www.jalan.net/',encoding: null,},body) { if (!error && response.statusCode == 200) { body = new Iconv('shift_jis','utf-8').convert(body).toString(); console.log(body); // Print the web page. } });
> encoding:null参数请求不要将Buffer(字节数组)转换为String.
>我们将此缓冲区传递给Iconv,以便转换为另一个UTF-8编码缓冲区.
>现在,这个缓冲区很适合转换为String.
(BTW,http://www.alc.co.jp已切换到UTF-8,所以我用另一个网站替换.)