URL-кодировщик / декодировщик (percent-encoding, UTF-8)
Используйте для безопасного встраивания текста в URL, параметры запроса или данные форм. Корректно обрабатывает пробелы, спецсимволы и Unicode, включая кириллицу.
Как это работает
Что такое URL-кодирование
URL допускают только ограниченный набор ASCII-символов. Всё остальное — пробелы, кириллица, иероглифы, emoji, спецсимволы — заменяется на %XX, где XX — шестнадцатеричное значение байта. Пробел становится %20, слеш — %2F, буква «я» в UTF-8 — %D1%8F (два байта в кодировке UTF-8). Именно поэтому русские URL вида яндекс.ру/поиск в адресной строке отображаются красиво, а при копировании превращаются в длинную строку из процентов.
Этот инструмент использует встроенные в браузер функции encodeURIComponent и decodeURIComponent. Они кодируют всё, кроме «безопасных» символов (буквы, цифры, -._~), что идеально для параметров запроса и данных форм.
encodeURI против encodeURIComponent
В JavaScript два кодировщика. encodeURI оставляет нетронутыми символы структуры URL (/ ? & # = + и т.д.) — используйте его для полного URL. encodeURIComponent экранирует все эти символы — используйте его для значений внутри параметров запроса.
Этот инструмент использует encodeURIComponent — более безопасный выбор для встраивания произвольного текста в URL. Если у вас полный URL со структурой, которую нужно сохранить, кодируйте только нужные части.
Типичные ловушки
Знак плюса в URL. Некоторые серверы интерпретируют '+' как пробел (наследие кодирования форм). encodeURIComponent оставляет '+' нетронутым, но сервер может декодировать его как пробел. Для надёжности заменяйте '+' на %2B при отправке данных.
Двойное кодирование. Кодирование уже закодированной строки добавляет ещё один слой (% становится %25, поэтому '%20' превращается в '%2520'). Всегда проверяйте, не закодирован ли уже ввод, прежде чем кодировать снова.
Увеличение длины. Многобайтовые UTF-8 символы (кириллица, CJK) превращаются в 3–4 percent-кода каждый. Строка из 100 русских символов легко может стать URL длиной 600+ символов.
Частые вопросы
›Почему '%20' не декодируется в пробел?
Должно декодироваться. Но если в URL есть '+', он тоже может означать пробел (устаревшее кодирование форм). При необходимости сначала замените + на пробел.
›Поддерживаются ли emoji?
Да. Emoji кодируются как последовательности байтов UTF-8 (обычно 4 байта = 4 percent-кода на один emoji).
›В чём разница между URL-кодированием и HTML-кодированием?
URL-кодирование использует нотацию % для контекста URL. HTML-кодирование использует < > и т.д. для HTML. Разные контексты — разные правила.
›Когда нужно кодировать, а когда нет?
Кодируйте любое значение, попадающее в параметр запроса URL, сегмент пути с пользовательским вводом или данные формы. Не кодируйте готовый URL целиком — это приведёт к двойному кодированию.
›Почему символ '%' в декодируемом тексте вызывает ошибку?
Символ '%', за которым следует не шестнадцатеричная последовательность, является недопустимым percent-encoding. Закодируйте '%' в '%25' перед включением в URL.
›Браузер делает это автоматически?
Да — при создании URL через API URL или URLSearchParams. Этот инструмент предоставляет ту же логику для ручного использования.
›Какие символы считаются безопасными и не требуют кодирования?
Буквы (A–Z, a–z), цифры (0–9) и символы: - . _ ~ . Всё остальное, включая кириллицу, кодируется encodeURIComponent.
›Данные покидают браузер?
Нет. Кодирование и декодирование выполняются локально.
Похожие инструменты
Обновлено: