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

Как преобразовать строку на юникоде в строку на кириллице, например, вот это: "/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 Comment

  1. madway

    Альтернативный способ:

    Функция УТФвСтроку(ВхСтр)Экспорт
    
    ВыхСтр=»»;
    
    поз=1;
    Пока поз<=СтрДлина(ВхСтр) Цикл
    
    симв=Сред(ВхСтр,поз,1);
    
    Если симв=»» И Сред(ВхСтр,поз+1,1)=»u» Тогда
    поз=поз+2;
    Вес=4096;
    ВыхКод=0;
    Для п=0 По 3 Цикл
    кодСимв=КодСимвола(ВхСтр,поз+п);
    Если кодСимв>96 Тогда // a-f
    кодСимв=кодСимв-87;
    ИначеЕсли кодСимв>64 Тогда // A-F
    кодСимв=кодСимв-55;
    Иначе
    кодСимв=кодСимв-48; // 0-9
    КонецЕсли;
    ВыхКод=ВыхКод+кодСимв*Вес;
    Вес=Вес/16;
    КонецЦикла;
    ВыхСтр=ВыхСтр+Символ(ВыхКод);
    поз=поз+4;
    Иначе
    ВыхСтр=ВыхСтр+симв;
    поз=поз+1;
    КонецЕсли;
    
    КонецЦикла;
    
    Возврат ВыхСтр;
    
    КонецФункции
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *