Модуль запроса, как правильно получить символы с акцентом? - PullRequest
18 голосов
/ 01 декабря 2011

Я использую: Модуль: Запрос - упрощенный метод HTTP-запроса для очистки веб-страницы с акцентированными символами á é ó ú ê ã и т. Д.

Я уже пробовал encoding: utf-8 снет успехаВ результате я все еще получаю ��� символов.

request.get({
    uri: url,
    encoding: 'utf-8'
    // ...

Есть ли какая-либо конфигурация, чтобы это исправить?

Я не знаю, если это проблема, но я заполнено один для этого модуля .Ответов пока нет.: /

Ответы [ 3 ]

24 голосов
/ 01 мая 2014

Поскольку двоичный код устарел, лучше использовать iconv и правильно обрабатывать декодирование:

var request = require("request"), iconv  = require('iconv-lite');
var requestOptions  = { encoding: null, method: "GET", uri: "http://something.com"};

request(requestOptions, function(error, response, body) {
    var utf8String = iconv.decode(new Buffer(body), "ISO-8859-1");
    console.log(utf8String);
});

Важной частью является установка кодировки для HTTP-запроса равной нулю encoding: null.

2 голосов
/ 01 декабря 2011

Укажите кодировку как utf8, а не utf-8. Вот список возможных кодировок для буфера из документации Node.js .

  • ascii - только для 7-битных данных ASCII. Этот метод кодирования очень быстрый и, если он установлен, удаляет старший бит.
  • utf8 - символы Юникода. Многие веб-страницы и другие форматы документов используют UTF-8.
  • base64 - строковое кодирование Base64.
  • 'binary - Способ кодирования необработанных двоичных данных в строки с использованием только первых 8 битов каждого символа. Этот метод кодирования является устаревшим и его следует избегать в пользу объектов Buffer, где это возможно. Эта кодировка будет удалена в следующих версиях Node.
0 голосов
/ 20 августа 2018

Меня судили и все в порядке (Shift_JIS):

var concat  = require('concat-stream'),
    Iconv   = require('iconv').Iconv,
    request = require('request');

var conv = new Iconv('Shift_JIS', 'utf8'),
    req  = request('http://www.alc.co.jp/');

req.pipe(conv);

req.on('error', function() {
    console.log('an error occurred');
});

conv.pipe(concat(function(body) {
    console.log(body.toString());
}));

https://github.com/request/request/issues/1080#issuecomment-56172161

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...