@kipyatokk

Принимаю xml в post запросе с кириллицей. Как декодировать содержания в utf-8 что бы получить верные данные?

Цель: Некий веб сервис, который принимает 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"/>
		</Номенклатура>
	</Информация>
</КоммерческаяИнформация>
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $