Percent-encoding — стандарт RFC 3986, по которому каждый байт UTF-8 записывается как «%» и две шестнадцатеричные цифры. Кириллическая буква «п» даёт два байта: %D0%BF. Без кодирования спецсимволы и не-ASCII символы ломают структуру URL или теряются при передаче.
URL-кодировщик и декодировщик: что это и как работает
URL-кодировщик и декодировщик преобразует текст в percent-encoding по RFC 3986 и обратно — обработка выполняется в браузере, данные на сервер не отправляются.
Механизм кодирования: каждый байт исходной строки в UTF-8 представляется как %HH, где HH — шестнадцатеричное значение байта. Символы, которые не требуют кодирования в режиме «Компонент» (латиница, цифры, - _ . ! ~ * ' ( )), передаются как есть. Все остальные, включая кириллицу, пробелы, ? & # /, заменяются на %-последовательности.
Декодирование — обратная операция: инструмент разбирает последовательности %HH в байты UTF-8 и собирает из них строку. При строгом режиме любой некорректный % без двух hex-цифр вызывает ошибку. В мягком режиме такой % остаётся символом «%», обработка продолжается.
Инструмент организован в три вкладки. Вкладка «Строка» — работа с одной логической единицей текста: кнопки кодирования, декодирования, копирования, статистика и таблица UTF-8 для первых 12 символов. Вкладка «Пакет» — построчная обработка до 500 строк за запуск при суммарном объёме до 400 000 символов. Вкладка «Справка» — таблица символов RFC 3986 и пояснение разницы между режимами без выполнения операций.
Режимы кодирования: «Компонент» и «Form»
Режим «Компонент» кодирует пробел как %20; режим «Form» кодирует пробел как + — разница определяет совместимость результата с целевой системой.
| Режим | Пробел | Символ «+» при декодировании | Применение |
|---|---|---|---|
| Компонент | %20 | остаётся «+» | значение параметра, фрагмент пути, строка для API |
| Form | + | → пробел (если переключатель включён) | query-строка из HTML-формы, application/x-www-form-urlencoded |
Режим «Компонент» по поведению близок к encodeURIComponent в JavaScript: не кодирует набор «безопасных» символов (- _ . ! ~ * ' ( )), кодирует всё остальное нелатинское. Это правильный выбор для кодирования отдельного значения перед подстановкой в URL.
Режим «Form» нужен, когда строка получена из HTML-формы с типом application/x-www-form-urlencoded — браузер при отправке формы записывает пробелы как +. При декодировании таких строк переключатель «+» → пробел должен быть включён.
Настройки режима задаются независимо для вкладок «Строка» и «Пакет». На «Строке» можно отлаживать одну фразу в режиме «Компонент», на «Пакете» — прогнать список в режиме «Form».
Параметры и настройки
URL-кодировщик принимает пять управляющих параметров — режим кодирования и два переключателя декодирования задаются независимо для вкладок «Строка» и «Пакет».
| Параметр | Что принимает | Тип | По умолчанию | Ограничения |
|---|---|---|---|---|
| Исходный текст («Строка») | Произвольный текст или %XX-строка | Строка UTF-8 | — | Любая длина; полный URL кодируется целиком |
| Текст пакета («Пакет») | Список строк (перевод строки как разделитель) | Многострочный текст | — | ≤ 500 строк; ≤ 400 000 символов суммарно |
| Режим кодирования | «Компонент» или «Form» | Enum | Компонент | Независим для «Строки» и «Пакета» |
| «+» → пробел при декодировании | Включено / выключено | Boolean | Включено | Независим для «Строки» и «Пакета» |
| Строгий режим декодирования | Включено / выключено | Boolean | Включено | Независим для «Строки» и «Пакета» |
Переключатель «строгий режим» меняет поведение при некорректных данных. Включён — любой % без двух hex-цифр останавливает декодирование с ошибкой в строке статуса. Выключен (best effort) — некорректные % остаются символами «%», валидные %HH продолжают обрабатываться. Второй вариант полезен при разборе частично испорченных логов.
Как пользоваться URL-кодировщиком
URL-кодировщик запускается в три шага: выбор вкладки и режима, ввод текста, нажатие кнопки действия.
Вкладка «Строка»:
- Выбрать режим — «Компонент» для значений параметров и API-строк; «Form» для данных из HTML-форм.
- Вставить текст в поле «Исходный текст» — одну фразу, одно значение параметра или уже закодированную строку.
- Нажать «Закодировать» или «Декодировать» — результат появится в поле «Результат»; на кнопке кратко «Готово».
- Нажать «Копировать результат» — строка уйдёт в буфер обмена; на кнопке «Скопировано».
- При подозрении на двойное кодирование — проверить строку статуса под полем «Результат»: там появится предупреждение, если в результате остались
%XX.
Вкладка «Пакет»:
- Задать режим и переключатели — независимо от вкладки «Строка».
- Вставить список строк в верхнее поле — каждая строка на отдельной строке.
- Нажать «Закодировать все» или «Декодировать все» — нижнее поле получит столько же строк результата.
- Строки с ошибкой декодирования помечены префиксом
#номер:— позиционное соответствие с вводом сохраняется. - Нажать «Копировать результат» — всё нижнее поле уйдёт в буфер.
Сценарии применения
URL-кодировщик закрывает пять практических сценариев — от кодирования кириллицы в параметрах до отладки частично закодированных логов.
Кодирование кириллицы для параметра запроса
SEO-специалист или разработчик кодирует поисковую фразу перед подстановкой в параметр q= вручную или в скрипте. Режим — «Компонент». Вставить фразу, нажать «Закодировать», скопировать результат. Слово «пример» даст %D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80 — шесть символов кириллицы дают двенадцать %XX-последовательностей, по два байта UTF-8 на символ.
Декодирование form-данных с «+» вместо пробелов
Backend-разработчик или тестировщик разбирает query-строку из HTML-формы, где браузер записал пробелы как +. Режим — «Form», переключатель «+» → пробел включён. Вставить строку вида first+name=Иван+Петров, нажать «Декодировать» — пробелы вернутся корректно. Без включённого переключателя + останется плюсом в результате.
Пакетное кодирование UTM-значений и анкоров
Интернет-маркетолог кодирует столбец UTM-меток или подписей кампаний за один запуск. Вкладка «Пакет», режим «Компонент». Вставить список — каждая метка на отдельной строке. Нажать «Закодировать все» — нижнее поле получит столько же строк в том же порядке. Ограничение: не более 500 строк и 400 000 символов суммарно за один запуск.
Отладка частично закодированных логов
Devops или веб-мастер декодирует строку из лога, где % встречается и как управляющий символ, и как данные. Выключить строгий режим (best effort). Вставить строку, нажать «Декодировать» — валидные %HH раскроются в символы, некорректные % останутся как символы %. Строгий режим в этом случае остановит обработку с ошибкой при первом же «мусорном» проценте.
Изучение побайтового представления символов
Разработчик или обучающийся вставляет символ — кириллическую букву, emoji, спецсимвол — и смотрит таблицу UTF-8 под полем ввода. Таблица показывает первые 12 символов строки: Символ / Байты (hex) / Percent. Это объясняет, почему одна буква кириллицы даёт два %XX, а emoji — три или четыре.
Ограничения и граничные условия
URL-кодировщик работает с текстом как последовательностью байт — он не разбирает URL как структурный объект и не обходит граничные условия автоматически.
Полный URL на входе. Если вставить https://example.com/path?q=текст и нажать «Закодировать», инструмент закодирует всё: https:// превратится в https%3A%2F%2F, слэши станут %2F. Результат непригоден как готовая ссылка. Для работы с полными URL — трансформер URL.
Двойное кодирование. Два нажатия «Закодировать» подряд дадут %25XX вместо %XX — символ % сам кодируется как %25. Инструмент выводит предупреждение в строку статуса, если после декодирования в результате остались %XX.
Некорректный % в строгом режиме. Строка вида param=%ZZ остановит декодирование с ошибкой: %ZZ не является валидной hex-последовательностью. Детали ошибки — в строке статуса под полем результата. Для таких строк — выключить строгий режим.
Лимиты пакета. При превышении 500 строк — на кнопке «Не более 500 строк», поле результата очищается. При превышении 400 000 символов суммарно — «Слишком большой ввод». Обходное решение: разбить список на части.
Таблица UTF-8. Отображает только первые 12 символов ввода. Для длинных строк таблица не покрывает весь ввод — это информационный блок, не диагностический инструмент.
Связанные инструменты
URL-кодировщик дополняется трансформером URL и генератором UTM-меток — каждый инструмент закрывает свой уровень работы со ссылками.
| Инструмент | Функция | Когда использовать вместе |
|---|---|---|
| Трансформер URL | Разбирает полный URL на компоненты: схема, хост, путь, параметры | Когда нужно закодировать только значение параметра внутри готовой ссылки, не трогая структуру |
| Генератор UTM-меток | Формирует ссылки с UTM-параметрами | Когда UTM-значения содержат кириллицу или спецсимволы — перед финальной сборкой ссылки |