Как раскодировать русские символы в строке URL (%EF%F0%E8%E2%E5%F2) #204604


#0 by itPiligrim
Использую InternetExplorer как ActiveX в 8-ке и отлавливаю по событию BeforeNavigate2 данные (русские буквы есть) посланные методом POST или GET, но они естественно закодированы: %EF%F0%E8%E2%E5%F2 Как раскодировать? Можно написать функцию соответствия закодированного симовла русской букве вручную, но должен же быть стандарный метод. Может есть какой встроенный COMОбъект? В PHP есть, например функция UrlDecode, кажется, но я не могу использовать PHP, но могу обращаться к COMОбъектам ОС. Так же понятно, что закодированные сомволы будут отличаться в зависимости от того какая кодировка использовалась на странице, как это учесть еще?
#1 by Camino
Кодировка страницы точно не влияет. Насчет всего остального - я думаю, smaharbA тебе должен помочь. Он у нас главный по JScript'у.
#2 by Рупор2
Функция Из_Любой_В_10(Знач Значение="0",Нотация=36) Экспорт     Если Нотация<=0 Тогда Возврат КонецЕсли;     Значение=СокрЛП(Значение);     Если Значение="0" Тогда Возврат КонецЕсли;     Результат=0;     Длина=СтрДлина(Значение);     Для Х=1 По Длина Цикл          М=1;          Для У=1 По Длина-Х Цикл М=М*Нотация КонецЦикла;          Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М;     КонецЦикла;     Возврат Окр(Результат); КонецФункции Сообщить(Симв(Из_Любой_В_10("%EF",16))); Сообщить(Симв(Из_Любой_В_10("%F0",16))); Сообщить(Симв(Из_Любой_В_10("%E8",16))); Сообщить(Симв(Из_Любой_В_10("%E2",16))); Сообщить(Симв(Из_Любой_В_10("%E5",16))); Сообщить(Симв(Из_Любой_В_10("%F2",16)));
#3 by smaharbA
для JScript - decodeURI, decodeURIComponent, а в твоем разе похоже unescape надо (но у Рупора замечательная функция)
#4 by itPiligrim
К сожалению не разобрался с функцией Рупор2. Эта функция переводит шеснадцеричное число в десятиричное, но толку то? Например, есть такой файл: Там методом get поылается информация на этот же файл и можно посмотреть как она кодируется. Файл в кодировке UNICODE. Посылаем строку "ааа", получаем %D0%B0%D0%B0%D0%B0. Я так понимаю B0 - это закодированная буква а, или пара %D0%B0 - это буква а, не ясно.... D0 - 208 в десятиричной системе B0 - 176 в десятиричной, но результат функции в 8-ке КодСимвола("а",1) = 1 072 Как получить 1072 из %D0%B0???
#5 by Ay49Mihas
Посмотри исходники
#6 by itPiligrim
Ay49Mihas Да, это то, что нужно, спасибо.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С