URL Encoder/Decoder: как закодировать текст для адреса и раскодировать строку

Ссылка с пробелом ломается. Параметр с кириллицей превращается в набор %D0.... Адрес с & в значении разрезается на лишние параметры. Всё это — следствие того, что в адресе допустим ограниченный набор символов. URL Encoder/Decoder кодирует текст для вставки в адрес (процентное кодирование) и раскодирует строки вида %D0%BF%D1%80%D0%B8. Для адреса инструмент показывает его части и параметры, а всё выполняется в браузере.

В этой статье разберём, зачем кодировать адреса, чем отличаются режимы кодирования, почему плюс превращается в пробел и как не перепутать URL-кодирование с Base64.

Интерфейс онлайн-инструмента URL Encoder/Decoder
Интерфейс онлайн-инструмента URL Encoder/Decoder

Что умеет инструмент

URL Encoder/Decoder принимает текст, параметр или адрес и выполняет одно из двух действий.

Действие Что делает
Закодировать Переводит текст в процентное кодирование
Раскодировать Переводит строку %XX обратно в текст
Кодировать адрес целиком (encodeURI) Сохраняет символы : / ? & =, кодируя остальное
Без опции encodeURI Кодирует всё, включая : / ? & = — так кодируют значения параметров

Для адреса инструмент показывает его части и параметры — удобно, когда нужно разобрать ссылку на составляющие.

Всё выполняется в браузере: введённые данные никуда не отправляются.

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

В адресе допустим ограниченный набор символов: латинские буквы, цифры и некоторые знаки. Пробелы, кириллица и спецсимволы должны быть закодированы — иначе адрес сломается или будет интерпретирован неверно.

Процентное кодирование заменяет недопустимый символ на % и два шестнадцатеричных числа — код символа в UTF-8.

Символ Кодирование
Пробел %20
П (кириллица) %D0%9F
& %26
= %3D
/ %2F
? %3F

Зачем это нужно:

Задача Почему кодирование обязательно
Параметры запроса Значение с & или = разрежет адрес на лишние параметры
Кириллица в адресе Браузер может отобразить её, но в запросе она должна быть закодирована
Пробелы Пробел в адресе недопустим, его кодируют как %20 или +
Спецсимволы в значениях #, %, + имеют特殊 meaning и должны быть закодированы
Передача данных между системами Кодирование гарантирует, что адрес не исказится

EncodeURI и кодирование значений: в чём разница

Это ключевое различие, которое часто упускают.

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

Без опции encodeURI — кодирует всё, включая : / ? & =. Так кодируют значения параметров: если значение содержит &, его нужно закодировать, иначе оно разрежет адрес.

Пример:

Что кодируем Режим Результат
https://example.com/поиск?q=тест encodeURI https://example.com/%D0%BF%D0%BE%D0%B8%D1%81%D0%BA?q=%D1%82%D0%B5%D1%81%D1%82
тест & ещё без encodeURI %D1%82%D0%B5%D1%81%D1%82%20%26%20%D0%B5%D1%89%D1%91

Правило простое: адрес целиком — encodeURI, значение параметра — без опции.

Почему плюс превратился в пробел

Частый вопрос при раскодировании. В параметрах форм ( application/x-www-form-urlencoded) пробел часто передаётся как +. Поэтому при раскодировании + может считаться пробелом.

Это значит:

  • Если в исходном тексте был +, а при раскодировании получился пробел — сработало правило форм.
  • Если нужен буквальный +, его кодируют как %2B.
  • При кодировании для адреса (не формы) пробел кодируется как %20, а не +.

Разные контексты — разные правила. Инструмент следует логике адресов и параметров, поэтому стоит учитывать, откуда пришла строка.

URL-кодирование и Base64: не путать

Два разных способа кодирования, которые часто путают.

URL-кодирование Base64
Что кодирует Символы в адресе Двоичные данные в текст
Пример Тест → %D0%A2%D0%B5%D1%81%D1%82 Тест → 0KLQtdGB0YI=
Зачем Передать спецсимволы в URL Передать байты в текстовом протоколе
Где используется Параметры адреса, query string JSON, JWT, Data URI, Basic Auth

URL-кодирование и Base64 решают разные задачи. Для адреса — URL-кодирование, для бинарных данных в тексте — Base64.

Разбор адреса на части

Для адреса инструмент показывает его части и параметры. Это удобно, когда нужно понять структуру ссылки.

Часть Что означает
Схема https, http
Хост Домен или IP
Путь Часть после хоста
Параметры Пары ключ=значение после ?
Фрагмент Часть после #

Разбор помогает увидеть, где именно находится проблема: в пути, в параметрах или во фрагменте.

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

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

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

Отладка API. Увидеть, как параметры выглядят в реальном запросе.

Проверка редиректов. Понять, куда ведёт ссылка с закодированными параметрами.

Подготовка данных для форм. Закодировать значения, которые будут отправлены.

Ограничения инструмента

  • Только текст и адреса. Инструмент не работает с файлами.
  • Нет автоматического определения направления. Нужно выбрать «Закодировать» или «Раскодировать».
  • Режим encodeURI нужно включать отдельно. Если кодируете значение параметра, опцию включать не нужно.
  • Правило + зависит от контекста. Инструмент следует логике адресов, но строка из формы может вести себя иначе.

Как пользоваться: пошагово

  1. Вставьте текст, параметр или адрес целиком.
  2. Включите «Кодировать адрес целиком», если кодируете адрес. Без опции кодируется всё — так кодируют значения параметров.
  3. Нажмите «Закодировать» или «Раскодировать» и скопируйте результат.

Типичные ошибки

Кодировать значение параметра в режиме encodeURI. Символы & и = останутся незакодированными и разрежут адрес. Для значений — без опции.

Кодировать адрес целиком без encodeURI. Структура адреса (: / ? & =) закодируется, и ссылка перестанет работать.

Путать + и %20. В адресах пробел — %20, в формах — +. Контексты разные.

Считать URL-кодирование защитой. Это не шифрование. Любой раскодирует строку.

Путать URL-кодирование и Base64. Это разные вещи. Для адреса — URL-кодирование, для бинарных данных — Base64.

Игнорировать фрагмент #. Всё после # не отправляется на сервер. Если данные должны дойти — они должны быть до #.

Вопросы и ответы

Зачем кодировать адреса? В адресе допустимы только латинские буквы, цифры и некоторые знаки. Пробелы, кириллица и спецсимволы записываются как %XX.

Почему плюс превратился в пробел? В параметрах форм пробел часто передаётся как +, поэтому при раскодировании + считается пробелом.

Чем encodeURI отличается от кодирования значения? encodeURI сохраняет структуру адреса (: / ? & =), кодируя остальное. Без опции кодируется всё — так кодируют значения параметров.

URL-кодирование — это шифрование? Нет. Это способ записи, который любой может обратить. Для защиты нужны шифрование или хеширование с солью.

Чем URL-кодирование отличается от Base64? URL-кодирование работает с символами адреса, Base64 — с двоичными данными. Это разные задачи.

Почему кириллица кодируется в несколько %XX? Одна русская буква в UTF-8 занимает 2 байта, каждый байт кодируется как %XX. Поэтому одна буква превращается в два кода.

Итог

URL Encoder/Decoder — инструмент для процентного кодирования текста и параметров и раскодирования строк %XX. Он различает кодирование адреса целиком (encodeURI) и кодирование значений, показывает части адреса и параметры, а всё выполняется в браузере. Помните, что URL-кодирование — не шифрование, не путайте его с Base64 и учитывайте разницу между + и %20 — и адреса будут собираться без ошибок.

Предыдущая запись

Генератор UUID: как создать UUID v4 и v7 и чем они отличаются

Онлайн-генератор UUID (GUID): случайные версии 4 и упорядоченные по времени версии 7. До 100 штук за раз, в нижнем или верхнем регистре, с дефисами или без. Всё выполняется в браузере.
Далее