URL-кодировщик
Кодируйте и декодируйте URL
Как использовать URL-кодировщик
Кодируйте и декодируйте URL Бесплатный онлайн-инструмент, без регистрации, без навязчивой рекламы. Используйте прямо сейчас.
Когда нужна кодировка URL?
URL может содержать только ограниченный набор ASCII-символов. Пробелы, кириллица, знаки пунктуации и не-ASCII символы должны быть закодированы как последовательности процентов (%XX) для безопасной передачи в URL. Это особенно актуально для сервисов, работающих с русскоязычным контентом.
- Параметры запроса: Передача пользовательского ввода в параметрах URL требует кодирования. Поиск «рецепт борща» становится
%D1%80%D0%B5%D1%86%D0%B5%D0%BF%D1%82%20%D0%B1%D0%BE%D1%80%D1%89%D0%B0— каждый кириллический символ кодируется в UTF-8. - Запросы к API: При программном построении URL кодируйте параметры перед добавлением к базовому URL. Предотвращает некорректные запросы и уязвимости безопасности, такие как инъекция параметров.
- Отправка форм: HTML-формы с method="GET" кодируют значения полей в URL. Понимание этой схемы помогает отлаживать отправку форм и восстанавливать исходные значения из логов сервера.
- Ссылки с кириллицей: При обмене URL, содержащими русский текст, многие платформы могут искажать их без правильного кодирования. Особенно актуально при копировании между разными системами.
- Отладка: Декодируйте закодированные URL для чтения исходных параметров. Полезно при анализе сетевых запросов в DevTools браузера или серверных логах.
Правила кодирования: Буквы (A–Z, a–z), цифры (0–9) и символы -_.~ никогда не кодируются. Все остальные символы кодируются как % плюс два hex-знака, представляющие байтовое значение UTF-8 символа. Один кириллический символ занимает 2 байта (4 hex-знака) в UTF-8.
Чем отличается encodeURI от encodeURIComponent в JavaScript?
encodeURI кодирует URL целиком, не трогая структурные символы со смыслом в URL (/, ?, &, #, :). encodeURIComponent кодирует всё, кроме букв, цифр и -_.~*. Для отдельных значений параметров всегда используйте encodeURIComponent.
Чем отличается + от %20 в пробеле?
Оба представляют пробел в кодировке URL, но в разных контекстах. %20 — корректное представление в любом компоненте URL. Знак + представляет пробел только в application/x-www-form-urlencoded (данные HTML-формы) — не в сегментах пути.
Чем опасно двойное кодирование?
Если URL содержит %252F, это закодированный %2F (который сам является кодировкой /). Однократное декодирование даёт %2F, двукратное — /. Двойное кодирование возникает при многократном кодировании URL. При многократном декодировании на сервере это может стать уязвимостью path traversal.
Какие символы нужно кодировать в сегменте пути URL?
Зарезервированные символы с особым значением: пробел (%20), # (%23), % (%25), ? (%3F) и другие. Слеш / — разделитель пути: буквальный слеш в сегменте пути кодируйте как %2F.
Что такое Punycode?
Punycode конвертирует интернационализированные доменные имена (IDN) с не-ASCII символами в совместимую с ASCII кодировку. Домены с кириллицей (например, пример.рф) преобразуются в Punycode для передачи. Это отличается от процентного кодирования: Punycode применяется только к именам доменов.
Кодировка URL vs Base64 vs HTML-сущности
Кодировка URL (percent-encoding) делает данные безопасными для URL. Base64 делает бинарные данные безопасными для текстовых контекстов (email, JSON). HTML-сущности делают спецсимволы безопасными для HTML: & становится &, < — <. Каждый решает одну и ту же задачу (представление данных в ограниченном наборе символов) для своего целевого контекста. Использование неправильной кодировки ведёт к ошибкам или уязвимостям.