URL-кодирование и декодирование
Инструмент переводит кириллицу, пробелы и служебные символы в запись %XX, которую можно вставить в адрес, и обратно — делает читаемыми ссылки вида %D0%BF%D0%BE%D0%B8%D1%81%D0%BA. Раскодированная ссылка сразу разбирается на части: протокол, хост, путь, параметры и якорь. Ошибки — обрезанная последовательность % или байты не в UTF-8 — подчёркиваются в тексте.
Как пользоваться
Вставьте ссылку или текст — результат появится сразу. При смене действия результат переносится в поле ввода, чтобы проверить обратное преобразование.
При кодировании выберите, что кодируете: значение одного параметра, полный адрес или данные формы. При декодировании включите «+ означает пробел», если строка пришла из HTML-формы. Текст обрабатывается в браузере и не отправляется на сервер.
Закодированный текст
https://example.com/%D0%BF%D0%BE%D0%B8%D1%81%D0%BA?q=%D0%B2%D1%91%D1%80%D1%81%D1%82%D0%BA%D0%B0%20flexbox&page=2#%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D1%8B
Текст
Разбор адреса
Для кодирования включите JavaScript. Пример: пробел в адресе записывается как %20, буква «ё» — как%D1%91.
Что кодировать: параметр, адрес или форму
- Значение параметра — как
encodeURIComponent(): кодируются и служебные символы/ ? & = #. Так нужно кодировать каждое значение по отдельности, иначе&в тексте разорвёт параметр на два. - Полный адрес — как
encodeURI(): служебные символы сохраняются, кодируются только кириллица, пробелы и недопустимые символы. Подходит для готовой ссылки целиком. - Данные формы — формат
application/x-www-form-urlencoded, в котором отправляют HTML-формы: как значение параметра, но пробел записывается плюсом.
const query = 'вёрстка & grid'
'https://example.com/?q=' + encodeURIComponent(query)
// "https://example.com/?q=%D0%B2%D1%91%D1%80%D1%81%D1%82%D0%BA%D0%B0%20%26%20grid"Плюс или пробел
В данных формы плюс означает пробел, а сам знак «+» кодируется как %2B. В пути адреса плюс остаётся плюсом. Поэтому decodeURIComponent() плюсы не трогает, а URLSearchParams заменяет их пробелами. Если после декодирования вместо пробелов видны плюсы, включите настройку «+ означает пробел».
Вопросы и ответы
Почему кириллица превращается в два кода на букву?
Адрес кодируется по байтам UTF-8, а буква кириллицы занимает два байта: «п» — %D0%BF. Эмодзи занимают четыре байта и четыре кода.
Что означает ошибка «не является символом в UTF-8»?
Последовательность %XX обрезана или текст закодирован в другой кодировке — например, Windows-1251 на старых сайтах: там «п» записывается как %EF. Такие ссылки этим инструментом не раскодировать.
Нужно ли кодировать кириллические адреса сайтов?
Браузер делает это сам. Кириллический домен вроде пример.рф кодируется отдельно — в Punycode (xn--e1afmkfd.xn--p1ai), а не через %XX.
Связанные инструменты
Текст и файлы в Base64 кодирует инструмент «Base64», а токены авторизации раскодирует «JWT».