Не могу обработать кириллицу

459
03 сентября 2017, 04:52

Использую Node.js для загрузки валют с центробанка.

Гружу xml по ссылке, в которой есть русскоязычные названия валют. Ни как не могу получить эти названия в нормальном виде, как в Google Chrome.

В Fiddler 4 происходит аналогичная ситуация.

const request = require('request');
const Buffer = require('buffer').Buffer;
const iconv = require('iconv-lite');
const utf8 = require('utf8');
request(URL, (err, result, body) => {
    let a = result.body;// ���������� ���
    let b = body;// ���������� ���
    let c = iconv.encode(iconv.decode(new Buffer(body, 'binary'), 'windows-1251'), 'utf8').toString();// ээээээээээ эээ
    let g = utf8.encode(body);// ���������� ���
});

Английские символы отображаются корректно, а русские нет.

На месте кракозябр в комментариях должно быть: Молдавский лей.

Answer 1

Вариант с let c .. почти верный. Для работы с бинарными данными вместе с url, надо передать значение encoding: null. В итоге примерно так, должно выглядеть:

const request = require('request');
const iconv = require('iconv-lite');
let config = {
    url: 'http://www.cbr.ru/scripts/XML_valFull.asp',
    encoding: null
}
request(config, (err, result, body) => {  
    let c = iconv.encode(iconv.decode(body, 'windows-1251'), 'utf8').toString();
    console.log(c);
})
READ ALSO
AngularJS querySelector не работает с ng-repeat

AngularJS querySelector не работает с ng-repeat

Помогите понять, почему этот код не работает:

505
Drag&Drop и Click на одном блоке

Drag&Drop и Click на одном блоке

Подскажите пожалуйста

436
Ошибка при вызове метода $('#id').load()

Ошибка при вызове метода $('#id').load()

Доброго времени суток

422
react native обработка ссылок в webView

react native обработка ссылок в webView

На устройстве хранятся зашифрованные xhtml файлы (+ не зашифрованныеcss,

480