Имя: Пароль:
1C
1С v8
Преобразование адресной строки с кириллицей в адресную строку для браузера
0 picom
 
16.08.13
15:05
На УФ есть поле HTML
в него надо загнать адресную строку
http://yandex.ru/yandsearch?text=МИСТА&lr=66
т.е. кириллицу надо преобразовать в
http://yandex.ru/yandsearch?text=миста&lr=66
Как?
1 picom
 
16.08.13
15:05
преобразовать в "%D0%BC%D0%B8%D1%81%D1%82%D0%B0&lr"
2 picom
 
16.08.13
15:45
up
в шапке код строка автоматом преобразовалась
поэтому вы не с первого раза поймете вопрос )
3 bborisko
 
16.08.13
15:58
4 picom
 
19.08.13
08:48
Ну так как преобразовать то ?
5 Defender aka LINN
 
19.08.13
08:55
(4) "Такое преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в Юникоде (UTF-8) в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении:"
6 Infsams654
 
19.08.13
09:00
// функция возвращает строку urlencoded
//
Функция UrlEncode(стр)
    
    HEX = Новый Массив();
    Для сч = 48 По 57 Цикл
        HEX.Добавить(Символ(сч));
    КонецЦикла;
    Для сч = 65 По 70 Цикл
        HEX.Добавить(Символ(сч));
    КонецЦикла;
    
    рез="";
    Для сч = 1 По СтрДлина(стр) Цикл
        чар = Сред(стр, сч, 1);
        Если (чар >= "a") И (чар <= "z") Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если (чар >= "A") И (чар <= "Z") Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если (чар >= "0") И (чар <= "9") Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если чар = "-" Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если чар = "_" Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если чар = "=" Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если чар = "&" Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если чар = "." Тогда рез = рез + чар; Продолжить; КонецЕсли;
        Если чар = "#" Тогда рез = рез + чар; Продолжить; КонецЕсли;
        кс = КодСимволаASCII(чар);
        рез = рез+ "%" + HEX[Цел(кс/16)] + HEX[Цел(кс % 16)];
    КонецЦикла;
    Возврат рез;
    
КонецФункции

// возвращает код символа в ASCII
//
Функция КодСимволаASCII(Символ)
   КодUNICODE = КодСимвола(Символ);
   Если ((КодUNICODE > 1039) И (КодUNICODE < 1104)) Тогда
       Возврат (КодUNICODE - 848);
   ИначеЕсли КодUNICODE = 8470 Тогда
       Возврат 185;
   ИначеЕсли КодUNICODE = 1105 Тогда
       Возврат 184;
   ИначеЕсли КодUNICODE = 1025 Тогда
       Возврат 168;
   Иначе
       Возврат КодUNICODE;
   КонецЕсли;
КонецФункции