Как устроен percent-encoding
Каждый символ, недопустимый в URL, заменяется на его байты в UTF-8, записанные как %XX. Пробел — %20, амперсанд — %26, буква «п» — два байта %D0%BF. Так любой текст, включая кириллицу, эмодзи и спецсимволы, можно безопасно передать в адресе страницы или параметре запроса.
Типичные задачи
- Ссылка с русским текстом: «поделиться» в мессенджер, UTM-метки с кириллицей, ссылки на статьи Википедии.
- Отладка API: собрать query-string вручную, раскодировать параметры из логов и вебхуков.
- Чтение чужих ссылок: длинный URL из письма с %D0%9F… декодируется в понятный текст — видно, куда он на самом деле ведёт.
Компонент или целый URL
Главное правило: значения параметров кодируйте как «компонент» (кодируются даже / и &), а готовый адрес целиком — в режиме «целый URL», который сохранит структуру ссылки. Перепутать — самая частая ошибка: закодированный как компонент адрес перестаёт открываться, а недокодированный параметр с & «съедает» все последующие параметры.
Частые вопросы
Зачем кодировать URL?
В адресе допустимы только латиница, цифры и немного знаков. Кириллица, пробелы и спецсимволы (&, ?, =, #) должны быть представлены percent-кодами, иначе ссылка сломается или параметры перепутаются: «привет» превращается в %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.
Чем отличаются режимы «компонент» и «целый URL»?
Режим «компонент» (encodeURIComponent) кодирует всё, включая / ? & = — подходит для значения параметра. Режим «целый URL» (encodeURI) сохраняет структуру адреса и кодирует только недопустимые символы. Если закодировать целый URL как компонент, он перестанет быть ссылкой.
Почему в ссылке из браузера видны %20 и %D0?
Это и есть percent-encoding: %20 — пробел, а пары вида %D0%BF — байты кириллицы в UTF-8. Вставьте такую ссылку в поле «Декодировать» — получите читаемый текст.
Обновлено: 2 июля 2026