Преобразование строки к 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, и т. д.
Код 1C v 8.х //PAV 17/05/2010 (Andrew_flyer)
Функция ПреобразоватьвСистему(Число10,система)
Если система > 36 или система < 2 тогда
Сообщить("Выбранная система исчисления не поддерживается");
Возврат -1;
КонецЕсли;
СтрокаЗначений = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
СтрокаСистема = "";
Пока Число10 > 0 цикл
РезДеления = Число10/система;
ЧислоСистема = цел(РезДеления);
остатокОтДеления = Число10 - система*(ЧислоСистема);
СтрокаСистема = сред(СтрокаЗначений,остатокОтДеления+1,1)+ СтрокаСистема;
Число10 = ?(ЧислоСистема=0,0,РезДеления);
КонецЦикла;
//!!!!!!!!
//[
Нечётное = стрДлина(СтрокаСистема) - цел(стрДлина(СтрокаСистема)/2)*2;
Если Нечётное тогда
СтрокаСистема = "0"+СтрокаСистема;
КонецЕсли;
//]
Возврат СтрокаСистема;
КонецФункции
Функция ПреобразоватьКURL(Стр)
Длина=СтрДлина(Стр);
Итог="";
Для Н=1 По Длина Цикл
Знак=Сред(Стр,Н,1);
Код=КодСимвола(Знак);
если ((Знак>="a")и(Знак<="z")) или
((Знак>="A")и(Знак<="Z")) или
((Знак>="0")и(Знак<="9")) тогда
Итог=Итог+Знак;
Иначе
Если (Код>=КодСимвола("А"))И(Код<=КодСимвола("п")) Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(208,16)+"%"+ПреобразоватьвСистему(144+Код-КодСимвола("А"),16);
ИначеЕсли (Код>=КодСимвола("р"))И(Код<=КодСимвола("я")) Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(209,16)+"%"+ПреобразоватьвСистему(128+Код-КодСимвола("р"),16);
ИначеЕсли (Знак="ё") Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(209,16)+"%"+ПреобразоватьвСистему(145,16);
ИначеЕсли (Знак="Ё") Тогда
Итог=Итог+"%"+ПреобразоватьвСистему(208,16)+"%"+ПреобразоватьвСистему(129,16);
Иначе
Итог=Итог+"%"+ПреобразоватьвСистему(Код,16);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Итог;
КонецФункции
Категория:
Работа с Интернет, Почтой (Mail), FTP Функция переводит обычную cтроку в Шестнадцатеричное представление и обратно Код 1C v 8.х // Функция переводит обычную cтроку в шестнадцатеричное представление
// Параметры:
// ТекстСообщения - Строка - Текст сообщения
// ТипКодировки - Число - Тип кодировки (1 - каждый символ представляется 2 байтами, 0 - 1 байтом)
// Возвращаемое значение: Строка - Строка после перекодировки
//
Функция Str2Hex(ТекстСообщения, ТипКодировки)
СтрокаЗнаков = "";
Если ТипКодировки = 1 Тогда
ДлинаКодаСимвола = 4;
Иначе
ДлинаКодаСимвола = 2;
КонецЕсли;
Для К = 1 По СтрДлина(ТекстСообщения) Цикл
СтрокаЗнаков = СтрокаЗнаков + Padl(DecToHex(КодСимвола(Сред(ТекстСообщения, К, 1))), ДлинаКодаСимвола, "0");
КонецЦикла;
Возврат СтрокаЗнаков;
КонецФункции // Str2Hex()
// Функция переводит cтроку из шестнадцатеричного представления в обычную строку
// Параметры:
// СтрокаСимволов - Строка - Текст в шестнадцатеричном виде
// ПризнакКода - Строка - Тип кодировки ("0" - каждый символ представляется 1 байтами, "1" - 2 байтами)
// Возвращаемое значение: Строка - Строка после перекодировки
//
Функция StrHexToStr(СтрокаСимволов, ПризнакКода) Экспорт
Если Число(ПризнакКода) = 0 Тогда
КоличествоСимволов = 2;
Иначе
КоличествоСимволов = 4;
КонецЕсли;
к = 1;
Результат = "";
Пока к < СтрДлина(СтрокаСимволов) Цикл
Строка = Сред(СтрокаСимволов, к, КоличествоСимволов);
Результат = Результат + Символ(HexToDec(Строка));
к = к + КоличествоСимволов;
КонецЦикла;
Возврат Результат;
КонецФункции // StrHexToStr()
Категория:
Работа с Текстом (Строкой)