Имя: Пароль:
1C
1C 7.7
v7: способ кодирования текста в URL для 7.7
0 jah1111
 
02.08.25
11:28
Здравствуйте! Подскажите рабочий способ кодировки тескта (в том числе кирилицы) в url для семерки. Очень надо. Можна и с внешними компонентами, главное чтобы работало.Спасибо.
1 Garykom
 
гуру
02.08.25
11:43
Чем способ "программист" не устраивает?
2 jah1111
 
02.08.25
11:56
(1) предлагаете каждый раз отсылать текст программисту на кодировку?
3 jah1111
 
02.08.25
12:29
(1) я же не сайте сантехников спрашиваю :) к програмистам обращаюсь
4 Бертыш
 
02.08.25
12:48
(0) Читал пейджер. Много думал. Ни хрена не понял.

Не понял чего вы от неё от семёрки добиваетесь. Распишите подробнее чтобы и я мог принять участие в разговоре
5 MWWRuza
 
гуру
02.08.25
13:12
Готовой функции сейчас под рукой нет, есть некое подобие обратной функции:

Функция  urldecode(Стр)
    Стр = Врег(Стр);
    Стр = СтрЗаменить(Стр,"\U0430","а");
    Стр = СтрЗаменить(Стр,"\U0431","б");
    Стр = СтрЗаменить(Стр,"\U0432","в");
    Стр = СтрЗаменить(Стр,"\U0433","г");
    Стр = СтрЗаменить(Стр,"\U0434","д");
    Стр = СтрЗаменить(Стр,"\U0435","е");
    Стр = СтрЗаменить(Стр,"\U0451","ё");
    Стр = СтрЗаменить(Стр,"\U0436","ж");
    Стр = СтрЗаменить(Стр,"\U0437","з");
    Стр = СтрЗаменить(Стр,"\U0438","и");
    Стр = СтрЗаменить(Стр,"\U0439","й");
    Стр = СтрЗаменить(Стр,"\U043A","к");
    Стр = СтрЗаменить(Стр,"\U043B","л");
    Стр = СтрЗаменить(Стр,"\U043C","м");
    Стр = СтрЗаменить(Стр,"\U043D","н");
    Стр = СтрЗаменить(Стр,"\U043E","о");
    Стр = СтрЗаменить(Стр,"\U043F","п");
    Стр = СтрЗаменить(Стр,"\U0440","р");
    Стр = СтрЗаменить(Стр,"\U0441","с");
    Стр = СтрЗаменить(Стр,"\U0442","т");
    Стр = СтрЗаменить(Стр,"\U0443","у");
    Стр = СтрЗаменить(Стр,"\U0444","ф");
    Стр = СтрЗаменить(Стр,"\U0445","х");
    Стр = СтрЗаменить(Стр,"\U0446","ц");
    Стр = СтрЗаменить(Стр,"\U0447","ч");
    Стр = СтрЗаменить(Стр,"\U0448","ш");
    Стр = СтрЗаменить(Стр,"\U0449","щ");
    Стр = СтрЗаменить(Стр,"\U044A","ъ");
    Стр = СтрЗаменить(Стр,"\U044B","ы");
    Стр = СтрЗаменить(Стр,"\U044C","ь");
    Стр = СтрЗаменить(Стр,"\U044D","э");
    Стр = СтрЗаменить(Стр,"\U044E","ю");
    Стр = СтрЗаменить(Стр,"\U044F","я");
    Стр = СтрЗаменить(Стр,"\U0410","А");
    Стр = СтрЗаменить(Стр,"\U0411","Б");
    Стр = СтрЗаменить(Стр,"\U0412","В");
    Стр = СтрЗаменить(Стр,"\U0413","Г");
    Стр = СтрЗаменить(Стр,"\U0414","Д");
    Стр = СтрЗаменить(Стр,"\U0415","Е");
    Стр = СтрЗаменить(Стр,"\U0401","Ё");
    Стр = СтрЗаменить(Стр,"\U0416","Ж");
    Стр = СтрЗаменить(Стр,"\U0417","З");
    Стр = СтрЗаменить(Стр,"\U0418","И");
    Стр = СтрЗаменить(Стр,"\U0419","Й");
    Стр = СтрЗаменить(Стр,"\U041A","К");
    Стр = СтрЗаменить(Стр,"\U041B","Л");
    Стр = СтрЗаменить(Стр,"\U041C","М");
    Стр = СтрЗаменить(Стр,"\U041D","Н");
    Стр = СтрЗаменить(Стр,"\U041E","О");
    Стр = СтрЗаменить(Стр,"\U041F","П");
    Стр = СтрЗаменить(Стр,"\U0420","Р");
    Стр = СтрЗаменить(Стр,"\U0421","С");
    Стр = СтрЗаменить(Стр,"\U0422","Т");
    Стр = СтрЗаменить(Стр,"\U0423","У");
    Стр = СтрЗаменить(Стр,"\U0424","Ф");
    Стр = СтрЗаменить(Стр,"\U0425","Х");
    Стр = СтрЗаменить(Стр,"\U0426","Ц");
    Стр = СтрЗаменить(Стр,"\U0427","Ч");
    Стр = СтрЗаменить(Стр,"\U0428","Ш");
    Стр = СтрЗаменить(Стр,"\U0429","Щ");
    Стр = СтрЗаменить(Стр,"\U042A","Ъ");
    Стр = СтрЗаменить(Стр,"\U042B","Ы");
    Стр = СтрЗаменить(Стр,"\U042C","Ь");
    Стр = СтрЗаменить(Стр,"\U042D","Э");
    Стр = СтрЗаменить(Стр,"\U042E","Ю");
    Возврат Стр;
КонецФункции

По такому-же принципу можно сделать и функцию кодирования.
Еще раз - это не готовое решение, а просто "наводка" :-)
И там не все символы.
Просто функция кодирования мне никогда не требовалась, поэтому не писал, и готовой нет.
Но, используя этот принцип, там дел на пол часа.
6 Злопчинский
 
02.08.25
13:47
проба строки
%D0%BF%D1%80%D0%BE%D0%B1%D0%B0%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8
.
//*******************************************
Процедура Сформировать()

	Хекс = "0123456789ABCDEF";
	СтрокаУТФ8 = глСервис.DecodeToUTF8(ВыбСтрока);
	РС = СтрДлина(СтрокаУТФ8);
	
	Результат = "";
	Для ы=1 По РС Цикл
		Символ = Сред(СтрокаУТФ8,ы,1);
		СимволКод = КодСимв(Символ);
		СтаршийРазряд = Цел(СимволКод/16);
		МладшийРазряд = СимволКод - СтаршийРазряд*16;
		Результат = Результат + "%"+
					Сред(Хекс,СтаршийРазряд+1,1)+
					Сред(Хекс,МладшийРазряд+1,1);
	КонецЦикла;
	Форма.тРезультат.Заголовок(Результат);
	
	Т = СоздатьОбъект("Текст");
	Т.ДобавитьСтроку(ВыбСтрока+РазделительСтрок+Результат);
	Т.Записать("e:\rez");

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


Проверять можно здесь
https://www.design-sites.ru/utility/url-encoding.php
8 Злопчинский
 
03.08.25
02:59
и что?
9 Djelf
 
03.08.25
23:55
(5) Ты что забыл встроенные функции Карлика? ;)
Карлик.FromURL и Карлик.ToURL?
(0) же написал что не против ВК...
Ежели что, то тут оно лежит: https://cloud.mail.ru/public/1cUy/spm8Y6Jwj
P.S. Обработка с тестами и с большим количеством примеров вложена в архив.
P.P.S. Последние исходники там же лежат, я не из тех кто подобные штуки прячет в сейф, а потом их все теряет при пожаре и даже ни с кем до этого не делится.
P.P.P.S. Собрать будет очень сложно, месяц работы как минимум закладывайте на сборку (т.к. используется зоопарк компиляторов).
10 MWWRuza
 
гуру
03.08.25
21:31
(9) Ты что забыл
Во блин... И правда забыл :-)  Точно! Просто никогда не требовалось, в юникод и обратно часто пользуюсь, а УРЛ у меня как-то не востребовано.
Оптимальный по простоте использования способ.
11 Djelf
 
03.08.25
23:44
(10) Мне тоже это пока не потребовалось, но исходя из концепции разработки, почему бы это не реализовать заранее, даже если прямо сейчас это не требуется?

upd

А, нет, вру! В одной выгрузке для поставщиков это давно используется для получения токена доступа (забыл уже, но сейчас проверил и нашел).
12 Pit0n_08
 
04.08.25
11:34
(9) +++