URL кодирование онлайн
URL-кодирование (percent-encoding) — механизм представления символов в URI, описанный в стандарте RFC 3986. Каждый «небезопасный» символ заменяется на знак процента и два шестнадцатеричных разряда его байтового представления в UTF-8: пробел становится %20, амперсанд — %26, кириллическая «П» — %D0%9F.
Кодирование необходимо, когда в URL попадают символы, которые имеют особое значение в синтаксисе URI (&, =, ?, #, пробел) или не входят в ASCII (кириллица, иероглифы, эмодзи). Без кодирования браузер может неверно интерпретировать адрес: например, & в значении параметра будет воспринят как разделитель параметров.
Инструмент предлагает три метода кодирования с разной степенью агрессивности. Выбор метода зависит от того, что именно вы кодируете — отдельное значение, целый URI или полный URL со структурой. Подробности о каждом методе — в разделе FAQ ниже.
Вся обработка выполняется в браузере с помощью нативных JavaScript-функций — данные не отправляются на сервер.
Часто задаваемые вопросы
- В чём разница между encodeURIComponent и encodeURI?
- encodeURIComponent кодирует все символы, кроме букв, цифр и нескольких спецсимволов (- _ . ! ~ * ' ( )). Он подходит для кодирования отдельных значений — например, параметра в query-строке. encodeURI сохраняет структурные символы URL (: / ? # @ & = + $), кодируя только «посторонние» символы. Простое правило: для значения параметра — encodeURIComponent, для целого URI — encodeURI.
- Когда использовать метод «Полный URL»?
- Метод «Полный URL» полезен, когда у вас есть полный адрес с query-параметрами и вы хотите корректно закодировать именно значения параметров, не трогая протокол, домен и путь. Инструмент разбирает URL через new URL(), применяет кодирование к каждому параметру отдельно и собирает обратно. Если строка не является валидным URL, используется fallback на encodeURI.
- Почему при декодировании появляется ошибка?
- Ошибка возникает, когда ввод содержит невалидную percent-encoded последовательность — например, %ZZ или одиночный %D0 без второго байта кириллического символа. Проверьте, что строка не обрезана посередине многобайтовой последовательности. Частая причина — копирование URL с обрезкой в середине закодированного символа.
- Как кодируется кириллица?
- Кириллические символы кодируются в UTF-8, где каждый символ занимает 2 байта. Например, буква «П» (U+041F) в UTF-8 представляется как D0 9F, поэтому в URL она становится %D0%9F. Слово «Привет» превращается в %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82 — 12 байтов вместо 6 символов. Китайские иероглифы занимают 3 байта, эмодзи — 4.
- Можно ли декодировать URL, закодированный другим инструментом или языком?
- Да. Percent-encoding — единый стандарт (RFC 3986), независимый от языка программирования. URL, закодированный в Python (urllib.parse.quote), PHP (urlencode), Java или любом другом инструменте, корректно декодируется здесь. Единственный нюанс: некоторые реализации кодируют пробел как + (формат application/x-www-form-urlencoded), а не %20 — в этом случае замените + на пробел перед декодированием.
- Чем URL-кодирование отличается от Base64?
- URL-кодирование заменяет отдельные «опасные» символы на %XX-последовательности, сохраняя читаемость остального текста. Base64 преобразует всю строку целиком в набор ASCII-символов (A-Z, a-z, 0-9, +, /), делая результат нечитаемым. URL-кодирование применяют для безопасной передачи данных в URL, Base64 — для передачи бинарных данных в текстовых протоколах (изображения в data-URL, вложения в email).