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

Что умеет инструмент
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 нужно включать отдельно. Если кодируете значение параметра, опцию включать не нужно.
- Правило
+зависит от контекста. Инструмент следует логике адресов, но строка из формы может вести себя иначе.
Как пользоваться: пошагово
- Вставьте текст, параметр или адрес целиком.
- Включите «Кодировать адрес целиком», если кодируете адрес. Без опции кодируется всё — так кодируют значения параметров.
- Нажмите «Закодировать» или «Раскодировать» и скопируйте результат.
Типичные ошибки
Кодировать значение параметра в режиме 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 — и адреса будут собираться без ошибок.