URL кодирование / декодирование
Кодируйте и декодируйте URL-адреса (процентное кодирование) мгновенно. Поддержка полных URL и отдельных параметров. Вся обработка выполняется в вашем браузере.
Что такое URL-кодирование?
URL-кодирование (процентное кодирование, percent-encoding) — это механизм, описанный в стандарте RFC 3986, для представления символов в URL-адресах, которые нельзя использовать напрямую. Небезопасные символы заменяются на % и два шестнадцатеричных символа, соответствующих байтовому значению символа.
Например, пробел становится %20, амперсанд & — %26, а кириллические символы сначала преобразуются в байты UTF-8, а затем кодируются. Без URL-кодирования браузеры и серверы могут неправильно интерпретировать специальные символы, что приводит к поломке ссылок и ошибкам API-запросов.
encodeURIComponent и encodeURI — в чём разница
JavaScript предоставляет две встроенные функции для URL-кодирования. Выбор правильной — принципиален:
- encodeURIComponent — кодирует все специальные символы, включая
: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Применяйте для кодирования отдельных значений — например, поискового запроса или значения параметра. Это наиболее часто используемая функция. - encodeURI — сохраняет символы, составляющие структуру полного URL (
: / ? # [ ] @). Применяйте для кодирования всего URL целиком, когда нужно сохранить протокол, путь и разделители параметров.
Таблица кодирования символов
- Пробел →
%20(или+в данных формы) &→%26=→%3D?→%3F/→%2F#→%23@→%40
Когда нужно URL-кодирование
- Параметры запроса — любой пользовательский ввод в URL-параметрах необходимо кодировать для предотвращения ошибок и внедрения вредоносного кода
- API-запросы — вызовы REST API часто требуют закодированных параметров, особенно для фильтров, поисковых запросов и пагинации
- URL-адреса перенаправления — обратные ссылки (callback URL), передаваемые как параметры, необходимо кодировать дважды для корректной обработки на всех этапах
- Интернационализированные URL — символы кириллицы, арабского, китайского и других нелатинских алфавитов требуют процентного кодирования
- Отправка форм — HTML-формы с методом
GETавтоматически кодируют значения, но при отправке через AJAX кодирование нужно выполнять вручную
Часто задаваемые вопросы
Чем отличается %20 от + для пробелов?
%20 — стандартное процентное кодирование, определённое в RFC 3986. Символ + используется специфически в данных HTML-форм (application/x-www-form-urlencoded). На практике %20 предпочтителен для путей URL, а + часто встречается в строках запросов при отправке форм.
Когда использовать encodeURIComponent, а когда encodeURI?
encodeURIComponent для отдельных значений — поисковый запрос, значение параметра, любой фрагмент, который будет вставлен в URL. encodeURI применяйте только когда у вас есть полный URL и нужно закодировать небезопасные символы, сохранив его структуру (протокол, хост, путь).