Преобразование строки к 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.х
Функция ПреобразоватьвСистему(Число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()
Категория:
Работа с Текстом (Строкой)