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

17.05.10

Разработка - Механизмы платформы 1С

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

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

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

Например:

Слово "Микроскоп"
кодируется в 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, и т. д.

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4509    dsdred    53    

71

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5287    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6408    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18471    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12087    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8817    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6279    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15983    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. hren 19.05.10 02:50 Сейчас в теме
2. LiFeAiR 19.05.10 12:08 Сейчас в теме
есть сом объект в котором это уже реализовано...
правда в текущем примере выполняется обратное преобразование
из url в win-1251
cks = Новый COMОбъект("Chilkat.String");
cks.AppendEncoded (Строка,"url","windows-1251");
Сообщить(cks.Str);
Возврат cks.Str;
rpgshnik; Wins-Konar; +2 Ответить
10. Трактор 1246 26.04.11 11:34 Сейчас в теме
(2)(8) COM объекты хороши только если преобразование выполняется под виндой, а это далеко не всегда так. Обработка полезна. Даже пригодилась.
3. lame 70 24.05.10 06:00 Сейчас в теме
4. Andrew_flyer 84 24.05.10 12:13 Сейчас в теме
(3) Пожалуйста!
сообщение написано в 6-ть утра =) Похоже что-то надо было сделать к понедельнику)))
5. lame 70 25.05.10 01:58 Сейчас в теме
"сообщение написано в 6-ть утра "
не забывай, пжлста, что 6 утра -это время по москве.
а сам я нахожусь в +7ч от москвы.
так что - все нормально со временем
6. lame 70 25.05.10 02:03 Сейчас в теме
че , блин, вообще что ль ....
москвич в пятом поколении и не знаешь, что существуют разные часовые пояса ?
7. Andrew_flyer 84 28.05.10 10:51 Сейчас в теме
8. 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);") ;
Возврат Сообщение;
КонецФункции
modernexpo; kudlach; pavlo; biker1052; METAL; solary; erek; чингачгук; vital1c; kruglay; Жолтокнижниг; McCoy77; Alltruist; slafk; Amutu; Andrew_flyer; +16 Ответить
9. Andrew_flyer 84 08.07.10 09:57 Сейчас в теме
(8) Любопытно, приму на заметку!
22. biker1052 24.12.18 08:31 Сейчас в теме
(8) Спасибо применил, быстродействие вроде неплохое.
11. Sintson 411 16.12.11 09:27 Сейчас в теме
Плюсанул, интересно для общего развития.
12. Murom 18.06.12 14:21 Сейчас в теме
Спасибо ,помогло.
Как раз собрал для модуль для преобразования в код URL и обратно.
Было бы удобно ,если б в статье была не только процедура преобразования ,но и декодирования в код URL.
13. KroVladS 34 09.01.13 16:44 Сейчас в теме
Ох уж эти кодировки да ещё и в URL.
Спасибо, помог победить один нехороший сайт.
IrinaBelVlad; +1 Ответить
14. StasN 31.07.13 13:28 Сейчас в теме
а есть решение обратного преобразования url, БЕЗ использования ScriptControl и каких-либо внешних компонент?
16. нормальный такой 93 28.01.14 18:13 Сейчас в теме
новый метод глобального контекста
полагаю появился с 8.3

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


GIZmo; xvchk; pavlo; _KVI_; 🅵🅾️🆇; piton66; KroVladS; RWS88; shum_ont; чингачгук; gimmy; pintov; igo1; vital1c; AlexTeslenko; +15 Ответить
18. piton66 2 08.02.18 14:46 Сейчас в теме
19. 🅵🅾️🆇 522 15.03.18 15:16 Сейчас в теме
(16) Также делал.
Кому прям совсем лень напрягаться:

	
&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
	ТабДок.Очистить(); 
	Макет		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
	
	// СтрокаВнутр 
	Строка		= ЗначениеВСтрокуВнутр(Реквизит);
	Макет.Рисунки.D1.Картинка	= Новый Картинка(ПолучитьКодQR(Строка, Погрешность, ГабШирина, ГабВысота), Истина);
	
	// НавигационнаяСсылка
	Строка		= ПолучитьНавигационнуюСсылку(Реквизит);
	Макет.Рисунки.D2.Картинка	= Новый Картинка(ПолучитьКодQR(Строка, Погрешность, ГабШирина, ГабВысота), Истина);
	
	// НавигационнаяСсылка
	Строка		= Формат(Реквизит.Код, "ЧГ=0")+";"+Реквизит.Наименование;
	Макет.Рисунки.D3.Картинка	= Новый Картинка(ПолучитьКодQR(Строка, Погрешность, ГабШирина, ГабВысота), Истина);
	
	ТабДок.Вывести(Макет);
КонецПроцедуры // СформироватьНаСервере()

&НаСервереБезКонтекста
Функция ПолучитьКодQR(Строка, Погрешность, Ширина, Высота)
	Попытка
		Соединение	= Новый HTTPСоединение("chart.googleapis.com", 443,,,, 0, Новый ЗащищенноеСоединениеOpenSSL);
		Запрос		= Новый HTTPЗапрос(СтрШаблон("chart?chs=%1x%2&cht=qr&chld=%3&chl=%4", Ширина, Высота, Погрешность, КодироватьСтроку(Строка, СпособКодированияСтроки.КодировкаURL)));
		Ответ		= Соединение.Получить(Запрос);
		Если Ответ.КодСостояния <> 200 Тогда Возврат Ответ.ПолучитьТелоКакСтроку(); КонецЕсли;
		Возврат Ответ.ПолучитьТелоКакДвоичныеДанные();
	Исключение	
		Сообщение		= Новый СообщениеПользователю;
		Сообщение.Текст	= СтрШаблон("Не удалось получить QR код.
							| %1", ОписаниеОшибки());
		Сообщение.УстановитьДанные();
		Сообщение.Сообщить();		
		Возврат Неопределено;	
	КонецПопытки;
КонецФункции // ПолучитьКодQR()
Показать


Заполняет картинки макета обработки (D1, D2, D3) QR кодами ссылки.

Поменяйте под себя погрешность с шириной и высотой. А можете оставить выбор за пользователем, сделав примерно так:
Запрос		= Новый HTTPЗапрос(СтрШаблон("chart?chs=%1x%2&cht=qr&chld=%3&chl=%4", Ширина, Высота, Погрешность, КодироватьСтроку(Строка, СпособКодированияСтроки.КодировкаURL)));


Информация для чтения
20. 🅵🅾️🆇 522 15.03.18 18:01 Сейчас в теме
(19) Маленько промахнулся топиком)
17. anatoliy.kichuk 87 15.09.15 10:57 Сейчас в теме
21. factor0 5 02.06.18 00:16 Сейчас в теме
Пробуйте так:
&НаСервере
Функция ПолучитьКодировкуСтрокиWindows1251(Текст)
	
	Возврат КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL , "windows-1251");
	
КонецФункции

&НаСервере
Функция ПолучитьКодировкуСтрокиUTF8(Текст)
	
	Возврат КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL, "UTF-8");
	
КонецФункции
Показать
Vovanches; CagoBHuK; MrChe; unknown181538; V_Izzy; Istur; shakmaev; +7 Ответить
23. CagoBHuK 32 01.09.21 15:47 Сейчас в теме
Указанное ниже значение
0105010459005216211A%BgFSXGF_qT
Должно преобразоваться в
0105010459005216211A%25BgFSXGF_qT
А преобразуется в
0105010459005216211A%25BgFSXGF%5FqT
Проверял тут
https://url-encode-online.rocks/urlencode.php
Оставьте свое сообщение