Конвертер юникода в кириллицу

Опубликовал Юрий (Mart) в раздел Программирование - Инструментарий

Как преобразовать строку на юникоде в строку на кириллице, например, вот это: "/u042E/u043D/u0438/u043A/u043E/u0434" в это: "Юникод"

Возникла такая необходимость при обмене с CoMagic.ru через API, предоставляемый этим сайтом. Поисковые запросы посетителей, набранные кириллицей, сайт возвращает в юникоде, поэтому нашлось такое решение, может кому-нибудь пригодится:

// "/u042E/u043D/u0438/u043A/u043E/u0434" = "Юникод"

ТекстВЮникоде = "/u042E/u043D/u0438/u043A/u043E/u0434";

ХТМЛ_Текст = "
|<html>
|<body>
|<script type='text/javascript'>
|var str = '" + ТекстВЮникоде + "';
|document.write(unescape(str));
|</script>
|</body>
|</html>
|";

НовыйHTMLДокумент = Новый COMОбъект("HtmlFile");
НовыйHTMLДокумент.open("text/html");
НовыйHTMLДокумент.write(ХТМЛ_Текст);
НовыйHTMLДокумент.close();

ТекстПослеПерекодировки = НовыйHTMLДокумент.documentElement.outerText;

См. также

Комментарии
1. Александр Юрин (madway) 116 12.04.17 19:30 Сейчас в теме
Альтернативный способ:
Функция УТФвСтроку(ВхСтр)Экспорт
	
	ВыхСтр="";
	
	поз=1;
    Пока поз<=СтрДлина(ВхСтр) Цикл
		
		симв=Сред(ВхСтр,поз,1);
		
		Если симв="\" И Сред(ВхСтр,поз+1,1)="u" Тогда
           поз=поз+2;
           Вес=4096;
           ВыхКод=0;
           Для п=0 По 3 Цикл
               кодСимв=КодСимвола(ВхСтр,поз+п);
               Если кодСимв>96 Тогда // a-f
                  кодСимв=кодСимв-87;
               ИначеЕсли кодСимв>64 Тогда // A-F
                  кодСимв=кодСимв-55;
               Иначе
                  кодСимв=кодСимв-48; // 0-9
              КонецЕсли;
              ВыхКод=ВыхКод+кодСимв*Вес;
              Вес=Вес/16;
          КонецЦикла;
          ВыхСтр=ВыхСтр+Символ(ВыхКод);
          поз=поз+4;
        Иначе
           ВыхСтр=ВыхСтр+симв;
           поз=поз+1;
	   КонецЕсли;
	   
	КонецЦикла;
	
    Возврат ВыхСтр;
	
КонецФункции
...Показать Скрыть
Оставьте свое сообщение