0. Andrew_flyer 82 01.01.70 03:00 Сейчас в теме

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

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
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. Трактор 1191 26.04.11 11:34 Сейчас в теме
(2)(8) COM объекты хороши только если преобразование выполняется под виндой, а это далеко не всегда так. Обработка полезна. Даже пригодилась.
3. lame 53 24.05.10 06:00 Сейчас в теме
4. Andrew_flyer 82 24.05.10 12:13 Сейчас в теме
(3) Пожалуйста!
сообщение написано в 6-ть утра =) Похоже что-то надо было сделать к понедельнику)))
5. lame 53 25.05.10 01:58 Сейчас в теме
"сообщение написано в 6-ть утра "
не забывай, пжлста, что 6 утра -это время по москве.
а сам я нахожусь в +7ч от москвы.
так что - все нормально со временем
6. lame 53 25.05.10 02:03 Сейчас в теме
че , блин, вообще что ль ....
москвич в пятом поколении и не знаешь, что существуют разные часовые пояса ?
7. Andrew_flyer 82 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);") ;
Возврат Сообщение;
КонецФункции
biker1052; METAL; solary; erek; чингачгук; vital1c; kruglay; Жолтокнижниг; McCoy77; Alltruist; slafk; Amutu; Andrew_flyer; +13 Ответить
9. Andrew_flyer 82 08.07.10 09:57 Сейчас в теме
(8) Любопытно, приму на заметку!
22. biker1052 24.12.18 08:31 Сейчас в теме
(8) Спасибо применил, быстродействие вроде неплохое.
11. Sintson 358 16.12.11 09:27 Сейчас в теме
Плюсанул, интересно для общего развития.
12. Murom 18.06.12 14:21 Сейчас в теме
Спасибо ,помогло.
Как раз собрал для модуль для преобразования в код URL и обратно.
Было бы удобно ,если б в статье была не только процедура преобразования ,но и декодирования в код URL.
13. KroVladS 09.01.13 16:44 Сейчас в теме
Ох уж эти кодировки да ещё и в URL.
Спасибо, помог победить один нехороший сайт.
IrinaBelVlad; +1 Ответить
14. StasN 31.07.13 13:28 Сейчас в теме
а есть решение обратного преобразования url, БЕЗ использования ScriptControl и каких-либо внешних компонент?
16. нормальный такой 90 28.01.14 18:13 Сейчас в теме
новый метод глобального контекста
полагаю появился с 8.3

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


🅵🅾️🆇; piton66; KroVladS; RWS88; shum_ont; чингачгук; gimmy; keypax; igo1; vital1c; AlexTeslenko; +11 Ответить
18. piton66 2 08.02.18 14:46 Сейчас в теме
19. 🅵🅾️🆇 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. 🅵🅾️🆇 15.03.18 18:01 Сейчас в теме
(19) Маленько промахнулся топиком)
17. anatoliy.kichuk 80 15.09.15 10:57 Сейчас в теме
21. factor0 4 02.06.18 00:16 Сейчас в теме
Пробуйте так:
&НаСервере
Функция ПолучитьКодировкуСтрокиWindows1251(Текст)
	
	Возврат КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL , "windows-1251");
	
КонецФункции

&НаСервере
Функция ПолучитьКодировкуСтрокиUTF8(Текст)
	
	Возврат КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL, "UTF-8");
	
КонецФункции
Показать
Istur; shakmaev; +2 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день

Программист 1С
Краснодар
зарплата от 80 000 руб. до 160 000 руб.
Полный день

Консультант 1 С
Краснодар
зарплата от 50 000 руб. до 150 000 руб.
Полный день

Консультант-методолог 1С
Краснодар
зарплата от 110 000 руб.
Полный день