Использую 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);// ���������� ���
});
Английские символы отображаются корректно, а русские нет.
На месте кракозябр в комментариях должно быть: Молдавский лей.
Вариант с 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);
})
Сборка персонального компьютера от Artline: умный выбор для современных пользователей