Бесплатный конвертер

Кодировщик URL / Декодировщик

Мгновенно кодируйте и декодируйте URL и компоненты URI в браузере. Бесплатно, конфиденциально и без загрузки файлов.

Или

Об этом инструменте

Кодирование URL-адресов (формально процентное кодирование, определенное в RFC 3986) переводит символы, имеющие особое значение в URL-адресах — пробелы, косые черты, амперсанды, решетки — в безопасную форму с использованием знаков процента, за которыми следуют шестнадцатеричные цифры. Символ пробела становится %20 (или + в контекстах с кодировкой формы), амперсанд становится %26 и так далее. Без этой кодировки специальные символы будут интерпретироваться как синтаксис URL-адреса, а не как буквальные данные, что приведет к нарушению URL-адреса или вызовет непредвиденное поведение.

Существуют две связанные, но разные кодировки. Стандартная кодировка компонента URL-адреса использует %-экранирование для всего, что находится за пределами незарезервированного набора символов: A-Z, a-z, 0-9, дефис, подчеркивание, точка, тильда. Вариант с кодировкой формы (application/x-www-form-urlencoded) дополнительно рассматривает пробелы как знаки плюса и использует другие правила для некоторых других символов. JavaScript encodeURIComponent использует строгую кодировку компонентов; encodeURI использует более разрешительную форму, сохраняющую символы структуры URL.

Этот инструмент предлагает как кодирование, так и декодирование. Режим кодирования оборачивает каждый символ, требующий экранирования, в формат %HH; режим декодирования отменяет преобразование. Оба полностью запускаются в вашем браузере с использованием встроенных URL-функций JavaScript, поэтому никакие данные никуда не отправляются.

Зачем кодировать или декодировать URL-адреса

Каждый раз, когда данные включаются в URL-адрес — параметры строки запроса, сегменты пути, содержащие пользовательский ввод, цели перенаправления — требуется правильное кодирование. Отсутствие кодирования приводит к тому, что URL-адреса ломаются при появлении специальных символов, пропускают границы параметров в строки запроса (превращая &x=1 в отдельный параметр) или блокируются веб-серверами как некорректные запросы.

Декодирование — это обратный процесс: извлечение исходных данных из закодированного URL-адреса. В адресной строке браузера URL-адреса часто отображаются в закодированном виде; декодирование показывает, что на самом деле было задумано. Ведение журнала, отладка и анализ безопасности — все это выигрывает от декодированных URL-адресов, которые показывают исходные параметры и пути.

Как использовать

Вставьте строку, выберите направление.

  1. Выберите кодирование или декодирование: Encode переносит небезопасные символы в формат %HH. Декодирование обращает %HH обратно в литеральные символы.
  2. Добавить вводимый текст: Вставьте строку для кодирования или декодирования. Для кодирования это обычно буквальное значение с пробелами, специальными символами или содержимым, отличным от ASCII. Для декодирования это URL-адрес или компонент URL-адреса, содержащий escape-символы %HH.
  3. Конвертировать: Инструмент применяет encodeURIComponent или decodeURIComponent. Закодированный вывод можно безопасно встроить в URL-адрес; декодированный вывод — это исходное буквальное значение.
  4. Скопируйте или скачайте: Используйте результат там, где вам это нужно. Закодированные значения вписываются в URL-адреса; декодированные значения раскрывают исходные данные.

Общие случаи использования

Технические детали

encodeURIComponent кодирует каждый символ за пределами незарезервированного набора [A-Za-z0-9-_.~]. Пробелы становятся %20, знаки плюс становятся %2B, знаки равенства становятся %3D и так далее. Символы вне ASCII сначала кодируются в UTF-8, а затем каждый байт экранируется %.

encodeURI более разрешителен и предназначен для полных URL-адресов, а не для компонентов. Он не экранирует /, ?, &, =, # и некоторые другие символы, поскольку эти символы имеют значение синтаксиса URL. Для встраивания пользовательских данных в URL-адрес почти всегда правильным выбором является encodeURIComponent.

decodeURIComponent инвертирует %-escape, проверяя, что каждый escape правильно сформирован и что полученные байты образуют действительный UTF-8. Неверный ввод выдает ошибку, а не мусор.

Лучшие практики

Часто задаваемые вопросы

Какие символы требуют кодирования URL?
Зарезервированные символы (&, =, ?, #, /, :, @) и небезопасные символы (пробелы, <, >, {, }, |, ^, ~, [, ], `) должны быть закодированы. Буквенно-цифровые символы и -_.~ безопасны и не требуют кодирования.
В чем разница между encodeURI и encodeURIComponent?
encodeURI кодирует полный URL-адрес, но сохраняет зарезервированные символы (://?#). encodeURIComponent кодирует все, кроме -_.!~*'() — используйте его для значений параметров запроса. Этот инструмент предлагает оба режима.
Как пробелы кодируются в URL-адресах?
Пробелы могут быть закодированы как %20 (стандартное процентное кодирование) или + (кодирование формы). %20 подходит для URL-путей, а + используется в строках запроса из HTML-форм. По умолчанию этот инструмент использует %20.
Могу ли я кодировать символы Юникода?
Да. Символы Юникода сначала кодируются в байты UTF-8, затем каждый байт кодируется в процентах. Например, «日» становится %E6%97%A5 (три байта UTF-8, каждый из которых закодирован в процентах).
Должен ли я использовать encodeURI или encodeURIComponent?
Почти всегда кодируйтеURIComponent. Используйте encodeURI только в том случае, если у вас есть полный URL-адрес и вы хотите сохранить его структуру — обычно это редкость, поскольку вы все равно создаете URL-адреса из компонентов.
Загружены ли мои данные на сервер?
Нет. Кодирование и декодирование URL-адресов полностью выполняются в вашем браузере.
Поддерживает ли он смайлы Unicode?
Да. Эмодзи — это многобайтовые последовательности UTF-8; кодер создает цепочку %-экранированных байтов, которую декодеры правильно собирают обратно в исходный эмодзи.
Что, если мои входные данные содержат строки, похожие на %HH, которые на самом деле не закодированы?
Кодирование превращает каждый % в %25, а затем повторно применяет экранирование для остальных. Декодирование строгого ввода выдает ошибки при неправильном переходе; неоднозначно выглядящие строки могут декодироваться неправильно.