Node.js модуль mikeal/request - искаженный веб-сайт non-utf8 (Shift_JIS)
Я пытаюсь получить доступ к веб-сайту не 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 я вижу искаженный японский текст.
1 ответ
Вы должны сделать преобразование самостоятельно. В приведенном ниже примере кода используется 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
хорошо для преобразования в строку.
(Кстати, http://www.alc.co.jp/ перешел на UTF-8, поэтому я заменил на другой сайт.)