🔧Toolify

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.

Данные покидают браузер?

Нет. Кодирование и декодирование выполняются локально.

Похожие инструменты

Обновлено:

Попробуйте наши ИИ-промпты →