gifts2017

Преобразование строки к URL

Опубликовал Андрей Попов (Andrew_flyer) в раздел Программирование - Практика программирования

Зачастую мы сталкиваемся с тем, что на страничку в get запросе кроме цифр требуется передать ещё и текст. Для этого текст должен быть преобразован в формат URL

Например:

Слово "Микроскоп"
кодируется в URL как:

"%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BF"

Суть метода заключается в следующем:

Преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в Юникоде (UTF-8) в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении:

М → D0 и 9C → %D0%9C
и → D0 и B8 → %D0%B8
к → D0 и BA → %D0%BA
р → D1 и 80 → %D1%80, и т. д.

Скачать файлы

Наименование Файл Версия Размер
Преобразование строки к URL от 17.05.2010 279
.epf 8,37Kb
17.05.10
279
.epf 8,37Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
2. LiFeAiR Можчиль (LiFeAiR) 19.05.10 12:08
есть сом объект в котором это уже реализовано...
правда в текущем примере выполняется обратное преобразование
из url в win-1251
cks = Новый COMОбъект("Chilkat.String");
cks.AppendEncoded (Строка,"url","windows-1251");
Сообщить(cks.Str);
Возврат cks.Str;
Wins-Konar; +1 Ответить 1
3. Павел Б (lame) 24.05.10 06:00
4. Андрей Попов (Andrew_flyer) 24.05.10 12:13
(3) Пожалуйста!
сообщение написано в 6-ть утра =) Похоже что-то надо было сделать к понедельнику)))
5. Павел Б (lame) 25.05.10 01:58
"сообщение написано в 6-ть утра "
не забывай, пжлста, что 6 утра -это время по москве.
а сам я нахожусь в +7ч от москвы.
так что - все нормально со временем
6. Павел Б (lame) 25.05.10 02:03
че , блин, вообще что ль ....
москвич в пятом поколении и не знаешь, что существуют разные часовые пояса ?
7. Андрей Попов (Andrew_flyer) 28.05.10 10:51
8. Mutu }{}{ (Mutu) 07.07.10 10:50
Если уж пошла такая пьянка то так тоже можно:
Функция ПреобразованиеСтрокуВURL(Строка="")
ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrCtrl.Language="JScript";
Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; encodeURI(uri);") ;
Возврат Сообщение;
КонецФункции

Функция ПреобразованиеURLВСтроку(Строка="")
ScrCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrCtrl.Language="JScript";
Сообщение = ScrCtrl.eval("var uri='"+Строка+"'; decodeURI(uri);") ;
Возврат Сообщение;
КонецФункции
solary; erek; чингачгук; vital1c; kruglay; Жолтокнижниг; McCoy77; Alltruist; slafk; Amutu; Andrew_flyer; +11 Ответить 2
9. Андрей Попов (Andrew_flyer) 08.07.10 09:57
(8) Любопытно, приму на заметку!
10. Трактор Трактор (Трактор) 26.04.11 11:34
(2)(8) COM объекты хороши только если преобразование выполняется под виндой, а это далеко не всегда так. Обработка полезна. Даже пригодилась.
11. Александр Синцов (Sintson) 16.12.11 09:27
Плюсанул, интересно для общего развития.
12. Илья Фамилия (Murom) 18.06.12 14:21
Спасибо ,помогло.
Как раз собрал для модуль для преобразования в код URL и обратно.
Было бы удобно ,если б в статье была не только процедура преобразования ,но и декодирования в код URL.
13. KV1s (KroVladS) 09.01.13 16:44
Ох уж эти кодировки да ещё и в URL.
Спасибо, помог победить один нехороший сайт.
14. Stas N (StasN) 31.07.13 13:28
а есть решение обратного преобразования url, БЕЗ использования ScriptControl и каких-либо внешних компонент?
16. artur rakhmatulin (нормальный такой) 28.01.14 18:13
новый метод глобального контекста
полагаю появился с 8.3

Синтаксис:
КодироватьСтроку(<Строка>, <СпособКодированияСтроки>, <КодировкаСтроки>)


RWS88; shum_ont; чингачгук; gimmy; keypax; igo1; vital1c; AlexTeslenko; +8 Ответить
17. Анатолий Кичук (anatoliy.kichuk) 15.09.15 10:57