Глобальный контекст.КодироватьСтроку

Методы · EncodeString

Кодирует строку в соответствии с выбранным способом кодирования.

Синтаксис

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

Примеры платформы

Стр1 = КодироватьСтроку("http://tools.ietf.org/папка/rfc2822",
                СпособКодированияСтроки.КодировкаURL);
Стр2 = КодироватьСтроку("http://tools.ietf.org/папка/rfc2822",
                СпособКодированияСтроки.URLВКодировкеURL);
Стр3 = РаскодироватьСтроку(
                "http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%80",
                СпособКодированияСтроки.КодировкаURL);
Сообщить(Стр1);
Сообщить(РаскодироватьСтроку(Стр1,
                СпособКодированияСтроки.КодировкаURL));
Сообщить(Стр2);
Сообщить(РаскодироватьСтроку(Стр2,
                СпособКодированияСтроки.КодировкаURL));
Сообщить(Стр3);
Сообщить(КодироватьСтроку(Стр3,
                СпособКодированияСтроки.URLВКодировкеURL));
Полное описание, параметры и ограничения

Глобальный контекст.КодироватьСтроку (Global context.EncodeString)

Глобальный контекст (Global context)

КодироватьСтроку (EncodeString)

Доступен, начиная с версии 8.3.1.

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

<Строка> (обязательный)
Тип: Строка.
Кодируемая строка.

<СпособКодированияСтроки> (обязательный)
Тип: СпособКодированияСтроки.
Способ кодирования строки.

<КодировкаСтроки> (необязательный)
Тип: Строка.
Кодировка, в которую преобразуется строка перед кодированием.
Значение по умолчанию: UTF8.
Возвращаемое значение:
Тип: Строка.

Описание:

Кодирует строку в соответствии с выбранным способом кодирования.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

Стр1 = КодироватьСтроку("http://tools.ietf.org/папка/rfc2822",
СпособКодированияСтроки.КодировкаURL);
Стр2 = КодироватьСтроку("http://tools.ietf.org/папка/rfc2822",
СпособКодированияСтроки.URLВКодировкеURL);
Стр3 = РаскодироватьСтроку(
"http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%80",
СпособКодированияСтроки.КодировкаURL);

Сообщить(Стр1);
Сообщить(РаскодироватьСтроку(Стр1,
СпособКодированияСтроки.КодировкаURL));
Сообщить(Стр2);
Сообщить(РаскодироватьСтроку(Стр2,
СпособКодированияСтроки.КодировкаURL));
Сообщить(Стр3);
Сообщить(КодироватьСтроку(Стр3,
СпособКодированияСтроки.URLВКодировкеURL));

См. также:
СпособКодированияСтроки
Глобальный контекст, метод РаскодироватьСтроку

Использование в версии:

Доступен, начиная с версии 8.3.1.

Методическая информация

Практические примеры

Закодировать название товара как одно значение параметра URL

Амперсанд, плюс, процент и косая черта в названии товара не должны превращаться в разделители URL. Кодируется значение q, не весь адрес сервиса.

Где и как запускать

Полный серверный общий модуль своей учебной конфигурации. Только собственные числа и строки в памяти.

Подготовка

  1. В своей отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеФормулы с флагом Сервер. Вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из серверной команды учебной обработки.

  2. Все числа, строки и URI создаются внутри примера. Нет запросов к базе, файлов, сетевых соединений или вычисления произвольного кода.

  3. Для первых запусков не меняйте данные. Затем меняйте один параметр за раз и сравнивайте объяснение с результатами проверок.

  4. Булево и тригонометрические функции в этих уроках не предназначены для вызова через COM-соединение. Кодирование строк выполняется на сервере.

  5. URI example.invalid только печатается и проверяется как строка; адрес не открывается. Эти BSL-примеры не запускались автоматически в 1С.

Процедура ВыполнитьПример() Экспорт
    Название = "Книга & набор + 50% / коробка";
    Кодированное = КодироватьСтроку(Название, СпособКодированияСтроки.КодировкаURL, "UTF8");
    Восстановленное = РаскодироватьСтроку(Кодированное, СпособКодированияСтроки.КодировкаURL, "UTF8");
    УчебныйURL = "https://example.invalid/search?q=" + Кодированное;
    Сообщить(Восстановленное = Название);
    Сообщить(СтрНайти(Кодированное, "&") = 0);
    Сообщить(СтрНайти(Кодированное, "/") = 0);
    Сообщить(СтрНайти(Кодированное, "+") = 0);
    Сообщить(Лев(УчебныйURL, СтрДлина("https://example.invalid/search?q=")) = "https://example.invalid/search?q=");
    Сообщить("Собственное закодированное значение: " + Кодированное);
    Сообщить("Учебный адрес, не открывается: " + УчебныйURL);
КонецПроцедуры

Разбор по шагам

  1. Задать собственное название с символами, имеющими специальный смысл в URL.

  2. Закодировать только значение параметра q способом КодировкаURL и явно выбрать UTF8.

  3. Раскодировать тем же способом и кодировкой и проверить точное восстановление исходного названия.

  4. Приписать уже закодированное значение к своему постоянному учебному адресу. Проверить отсутствие исходных разделителей в значении.

  5. Только вывести строку URL. Не создавать HTTPСоединение и не выполнять переход.

Как проверить результат

  1. Пять сообщений Истина: точный обратный переход, исходные &, / и + в закодированном значении отсутствуют, префикс адреса сохранён.

  2. Фактическое percent-кодирование выводится; пробел не путайте с исходным знаком плюс товара.

Ожидаемый результат

Полный пример безопасного формирования одного собственного query-параметра с проверкой roundtrip.

На что обратить внимание

  1. URLВКодировкеURL сохраняет специальные символы URL и не заменяет кодирование отдельного значения параметра.

  2. Кодирование не является шифрованием: данные можно раскодировать.

  3. Не кодируйте готовое значение повторно без необходимости: процент может стать %25.

  4. Не раскодируйте весь готовый URL перед отправкой: это может вернуть разделители внутрь значений параметров.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Закодировать кириллический путь в своём готовом URL, сохранив разделители

URLВКодировкеURL предназначен для строки URL целиком: сохраняются специальные символы структуры адреса. Это другой режим, чем кодирование значения q.

Где и как запускать

Полный серверный общий модуль своей учебной конфигурации. Только собственные числа и строки в памяти.

Подготовка

  1. В своей отдельной конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеФормулы с флагом Сервер. Вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из серверной команды учебной обработки.

  2. Все числа, строки и URI создаются внутри примера. Нет запросов к базе, файлов, сетевых соединений или вычисления произвольного кода.

  3. Для первых запусков не меняйте данные. Затем меняйте один параметр за раз и сравнивайте объяснение с результатами проверок.

  4. Булево и тригонометрические функции в этих уроках не предназначены для вызова через COM-соединение. Кодирование строк выполняется на сервере.

  5. URI example.invalid только печатается и проверяется как строка; адрес не открывается. Эти BSL-примеры не запускались автоматически в 1С.

Процедура ВыполнитьПример() Экспорт
    Префикс = "https://example.invalid/";
    ИсходныйURL = Префикс + "каталог/книга";
    КодированныйURL = КодироватьСтроку(ИсходныйURL, СпособКодированияСтроки.URLВКодировкеURL, "UTF8");
    ВосстановленныйURL = РаскодироватьСтроку(КодированныйURL, СпособКодированияСтроки.URLВКодировкеURL, "UTF8");
    Сообщить(ВосстановленныйURL = ИсходныйURL);
    Сообщить(Лев(КодированныйURL, СтрДлина(Префикс)) = Префикс);
    Сообщить(КодированныйURL <> ИсходныйURL);
    Сообщить(СтрНайти(КодированныйURL, "каталог") = 0);
    Сообщить("Свой URL с закодированным путём, без перехода: " + КодированныйURL);
КонецПроцедуры

Разбор по шагам

  1. Составить свой HTTPS URL с кириллическим путём без query, секретов и внешних вложений.

  2. Кодировать готовую строку режимом URLВКодировкеURL, оставляющим : и / как разделители.

  3. Проверить сохранение префикса https://example.invalid/ и кодирование кириллических букв.

  4. Раскодировать той же кодировкой и способом и проверить исходный полный адрес.

  5. Сравнить с предыдущим уроком: отдельные пользовательские параметры сначала кодируются отдельно, а не склеиваются сырыми с URL.

Как проверить результат

  1. Четыре сообщения Истина: roundtrip, сохранённый префикс, изменённая строка и отсутствие исходного кириллического слова.

  2. Ни браузер, ни сеть не используются.

Ожидаемый результат

Есть практическое различие между percent-кодированием URL целиком и кодированием его отдельного компонента.

На что обратить внимание

  1. Режим не исправляет неправильную структуру URL и не подтверждает доступность адреса.

  2. Сохранение специальных символов опасно при склейке сырого пользовательского query-значения — для него нужен отдельный первый урок.

  3. example.invalid используется только как учебный адрес, не как работающий ресурс.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.