Цель: Некий веб сервис, который принимает post запрос с xml в теле и делает какие то действия с ним. Кодировка win-1251 и кириллица в содержании естественно.
Пример с которым я работаю
const express = require('express');
const xmlparser = require('express-xml-bodyparser');
const app = express();
const iconv = require('iconv-lite');
app.post('/down', function(req, res){
const buf = req.rawBody;
const str = iconv.decode(buf, 'windows-1251');
res.send(str);
});
express-xml-bodyparser - помогает мне увидеть xml содержание в req.body и req.rawBody, без него я получаю пусто тело. Но вместо кириллицы я вижу ������������. Ну, есть же прекрасная библиотека iconv, декодирую результат и делов, подумал я. Но на выходе я получаю эээээээээээ... просто набор русских символов ээээээ. Подскажите пожалуйста, что я упустил? Сервер ожидает кодировку utf-8 и сам преобразует полученные xml данные в него. Могу ли я как-то заставить не делать этого, и принимать запрос в исходной кодировке.? Или же как мне корректно декодировать данные, что бы получить "человеческое" содержания запроса?
Пример xml который я получаю из post запроса.
<?xml version="1.0 encoding="windows-1251"? >
<КоммерческаяИнформация ВидДанных="1">
<Информация Владелец="123 ДатаВыгрузки="123" ВремяВыгрузки="123" ТипПрайса="123">
<Номенклатура КодНоменклатуры="123" Номенклатура="Тестовый товар">
<Предложение Цена="123" СрокГодности="2025-10-01" Остаток="9000" МинЗаказ="" Кратность="250"/>
<Предложение Цена="123" СрокГодности="2025-09-01" Остаток="4270" МинЗаказ="" Кратность="250"/>
<Предложение Цена="123" СрокГодности="2025-09-01" Остаток="25500" МинЗаказ="" Кратность="250"/>
<Предложение Цена="123" СрокГодности="2025-09-01" Остаток="21000" МинЗаказ="" Кратность="250"/>
<Предложение Цена="123" СрокГодности="2025-09-01" Остаток="10939" МинЗаказ="" Кратность="250"/>
</Номенклатура>
</Информация>
</КоммерческаяИнформация>