Преобразовать UNICODE ответ с Сайта

ProxyInspector 51 1 4

Часто сайты возвращают ответ в кодировке UNICODE, при этом в ответе встречаются текст в кодировке UTF-16 и UTF-8 прочитать подобный текст для 1С - большая проблема

//Отдельные сайты шлют ответы в перемешку UTF-16 и UTF-8 
//Например 		"%u041F%20%3A TEST"
//Надо сделать 	"%u041F%u0020%u003A TEST"
Функция ПреобразоватьUnicode(Unicode) Экспорт
	
	СтрUnicode = "";
	
	МассивПодстрок = СтрРазделить(Unicode,"%",Ложь);
	Для Каждого Подстрока Из МассивПодстрок Цикл
		Если Сред(Подстрока,1,1) = "u" Тогда 		//Это UTF-16
			СтрUnicode = СтрUnicode + "%" + Подстрока;
			Продолжить;
		Иначе										//Это UTF-8
			ПервыеДваСимвола = Сред(Подстрока,1,2);
			ПоследниеСимволы = Сред(Подстрока,3);
			Подстрока = "u00" + ПервыеДваСимвола + ПоследниеСимволы;
			СтрUnicode = СтрUnicode + "%" + Подстрока;
		КонецЕСли;
	КонецЦикла;
	
	СтрUnicode  = СтрЗаменить(СтрUnicode,"%","\");		//Подготовим для JSON
		
	ЧтениеJSON = Новый ЧтениеJSON;		
	
	Стр = "{""Текст"":"""+СтрUnicode + """}";
	
	ЧтениеJSON.УстановитьСтроку(Стр);
	
    Соответствие    =  ПрочитатьJSON(ЧтениеJSON, Истина);
    Результат    = Соответствие.Получить("Текст");
	
	Возврат Результат;
КонецФункции
1
Орфографическая ошибка в перемешку: перемешку

Комментарии

Mihuilka
#1, 20 марта 2024 10:37

а если сразу было сделать простую структуру типа
С = Новый Структура ("Текст", <ТекстЮникод>);
далее сделать строку json
потом json перевести в структуру обратно
и на выходе взять значение по ключу структуры?


См. также

Редакторам сайта

АдресСайта (БСП)

ПараметрыАутентификацииНаСайте (БСП)

Загрузка курсов валют с сайта РБК

АвторизоватьНаСайтеПоддержкиПользователей (БСП)

СлужебнаяURLДляПереходаНаСтраницуИнтегрированногоСайта (БСП)

НавигационнаяСсылкаВебСайта (БСП)

ФоновоеЗаданиеЗагрузкиКлассификатораАдресовССайта (БСП)

Модератору