Перейти к содержимому
15 000 бонусов на бронирование отелей!
(Реклама. АО "СУТОЧНО". ИНН 7300037501)

VBA Excel. Метод WorksheetFunction.EncodeUrl

    Метод WorksheetFunction.EncodeUrl в VBA Excel. URL-кодирование строки (процентное кодирование) для преобразования текста в формат, безопасный для URL.

    Метод WorksheetFunction.EncodeUrl

    Метод WorksheetFunction.EncodeUrl в VBA Excel используется для процентного кодирования, или URL-кодирования, строки, то есть преобразования текста в формат, безопасный для передачи в URL (например, в HTTP-запросах).

    Синтаксис метода WorksheetFunction.EncodeUrl:

    Параметр Text — это строка, которую надо закодировать.

    URL-кодирование

    Суть процентного кодирования

    URL-кодирование, или процентное кодирование, является механизмом, который позволяет представлять специальные символы в URL-адресах в безопасном формате. Стандарт RFC 3986, принятый IETF, определяет правила кодирования URL и URI, обеспечивая единообразную интерпретацию адресов в интернете.

    Суть процентного кодирования заключается в том, что каждый символ, который не разрешён в URL напрямую, заменяется на символ процента (%), за которым следуют две шестнадцатеричные цифры, представляющие ASCII-код этого символа.

    Стандарт RFC 3986 разделяет символы в URL на три категории:

    1. Зарезервированные символы: :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, «,», ;, =
    2. Незарезервированные (безопасные) символы: A-Z, a-z, 0-9, -, _, ., ~
    3. Неразрешённые символы: все остальные символы, включая пробелы, специальные символы и символы национальных алфавитов, в том числе, кириллицы.

    Незарезервированные символы можно использовать в URL и URI без кодирования — они являются безопасными для использования в URL-адресах.

    Зарезервированные символы могут использоваться непосредственно только в своих специальных ролях, например, символ / для разделения компонентов пути. В других случаях они должны быть закодированы.

    Неразрешённые символы всегда требуют кодирования.

    Таблица частых замен

    Примеры самых частых замен зарезервированных и неразрешённых символов, кроме знаков национальных алфавитов:

    Символ Замена Символ Замена Символ Замена
    ! %21 : %3A @ %40
    # %23 ; %3B [ %5B
    $ %24 < %3C ] %5D
    % %25 = %3D ^ %5E
    & %26 > %3E ` %60
    ' %27 ? %3F { %7B
    ( %28 / %2F } %7D
    ) %29 + %2B пробел %20
    * %2A , %2C \ %5C

    URL-кодирование кириллицы

    Процентное кодирование кириллицы и других нелатинских символов осуществляется по следующему алгоритму:

    1. Символ преобразуется в последовательность байтов в кодировке UTF-8.
    2. Каждый полученный байт кодируется как % + его шестнадцатеричное значение.

    Поскольку в UTF-8 большинство кириллических букв занимают 2 байта, одна русская буква превратится в 6 символов (два блока по %XX).

    Примеры для кириллицы:

    • а (русская) → байты UTF-8: D0 B0 → %D0%B0
    • Я (русская) → байты UTF-8: D0 AF → %D0%AF
    • ё (русская) → байты UTF-8: D1 91 → %D1%91

    Пользовательская функция URLEncode_UTF8

    В версиях Excel до 2013 года встроенного метода WorksheetFunction.EncodeUrl ещё не было. В них его применение вызывает ошибку времени выполнения: Run-time error '1004': Не удалось получить свойство EncodeUrl класса WorksheetFunction.

    Для старых версий VBA Excel (до 2013 года) существует пользовательская функция процентного кодирования URLEncode_UTF8:

    Проверяем корректность работы функции URLEncode_UTF8 в версии VBA Excel не старше 2013 года, где уже существует метод WorksheetFunction.EncodeURL:

    Результат проверки процентного кодирования текста методом WorksheetFunction.EncodeURL и функцией URLEncode_UTF8:

    Результат проверки процентного кодирования


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.