Перейти к основному содержимому
FreeOnlineTools Go
Русский
Объяснение

Что такое URL-кодирование? Полное объяснение percent-encoding

Автор: FreeOnlineTools Team · Обновлено 2026-09-02

Быстрый ответ

URL-кодирование (percent-encoding) заменяет unsafe символы в URL на % и две hex-цифры. Например, пробел становится %20, & становится %26. Обеспечивает передачу URL без ambiguity. Используйте наш бесплатный URL Encoder и Decoder.

Введение

URL-кодирование, также percent-encoding, — механизм кодирования специальных символов в URL для безопасной передачи через интернет. URL могут содержать только ограниченный набор ASCII-символов —буквы, цифры и несколько reserved символов. Любой другой символ (пробелы, кавычки, не-ASCII буквы) должен быть кодирован как знак процента (%), за которым следуют две hex-цифры. URL-кодирование определено RFC 3986.

Шаг за шагом

  1. Поймите, какие символы нуждаются в кодировании

    Незарезервированные символы (A-Z, a-z, 0-9, -, _, ., ~) не нуждаются в кодировании. Зарезервированные символы (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) имеют особое значение в URLs и должны быть закодированы при использовании в качестве данных. Все остальные символы (пробелы, кавычки, не-ASCII) должны быть закодированы.

  2. Изучите механизм кодирования

    Каждый символ, требующий кодирования, преобразуется в последовательность байтов UTF-8, затем каждый байт представляется как %XX, где XX — шестнадцатеричное значение. Пробел (0x20) → %20. Символ «é», отличный от ASCII (UTF-8: 0xC3 0xA9) → %C3%A9.

  3. Различие encodeURI и encodeURIComponent

    encodeURI() кодирует полный URL, но сохраняет зарезервированные символы (:/?&=), которые являются частью структуры URL. encodeURIComponent() кодирует все, кроме незарезервированных символов — используйте его для значений параметров запроса, где зарезервированные символы представляют собой данные, а не структуру.

  4. Декодировать процентное кодирование URLs

    Декодирование меняет кодировку: %20 → пробел, %C3%A9 → é. Используйте decodeURI() для полного URLs и decodeURIComponent() для значений параметров запроса. Недопустимые escape-последовательности (например, %ZZ) вызывают ошибки.

Примеры

Кодирование пространства

Вход: hello world

Выход: hello%20world

Кодировать текст, отличный от ASCII

Вход: café

Выход: caf%C3%A9

Кодирование значения параметра запроса

Вход: name=John Doe & Co.

Выход: name%3DJohn%20Doe%20%26%20Co.

Распространенные проблемы

  • Кодирование всего URL, когда требуется кодирование только значений — кодируйте значения параметров запроса, а не структуру URL (://?&=).
  • Двойное кодирование — если URL уже закодирован, при повторном кодировании выдается %2520 вместо %20. Сначала декодируйте, если не уверены, закодировано ли оно уже.
  • Неправильное использование encodeURI и encodeURIComponent — encodeURI сохраняет символы структуры URL; encodeURIComponent кодирует их. Используйте последнее для значений параметров запроса.
  • Недопустимые escape-последовательности —%ZZ или одиночный % в конце недопустимы и при декодировании выдадут ошибки.

Советы

  • Всегда кодируйте значения параметров запроса, которые могут содержать пробелы, специальные символы или пользовательский ввод, чтобы предотвратить внедрение URL.
  • Используйте encodeURIComponent() для значений параметров запроса и encodeURI() для полного URLs, для которого требуется только закодировать небезопасные символы.
  • Кодировка URL не является шифрованием: ее может расшифровать каждый. Никогда не используйте его для сокрытия конфиденциальных данных.
  • Используйте наш кодировщик и декодер URL для мгновенного и конфиденциального преобразования в вашем браузере.

Сопутствующие инструменты

Связанные руководства

Ссылки