我正在尝试使用请求模块访问非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,我也会看到乱码的日文文本。
答案 0 :(得分:6)
您需要自己进行转换。下面的示例代码使用node-iconv。
var Iconv = require('iconv').Iconv;
var request = require('request');
request({
uri: 'http://www.jalan.net/',
encoding: null,
}, function (error, response, 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
参数要求request
不要将Buffer
(字节数组)转换为String
。Iconv
,以便转换为另一种Buffer
UTF-8编码。Buffer
很适合转换为String。(BTW,http://www.alc.co.jp已切换为UTF-8,因此我用其他网站替换。)