URL-кодировщик

Кодирует и декодирует URL-строки: переводит специальные символы в percent-encoded формат %XX и обратно. Поддерживает encodeURIComponent и encodeURI.

01Кодировщик02Сравнение03О кодировании04Вопросы05Похожие
01

Кодировщик

Режим
Функция
Вид
Исходная строка
Результат · encodeURIComponent
Результат появится здесь…
Вход: 0 симв. · Выход: 0 симв.
02

Что кодирует каждая функция

encodeURIComponent агрессивнее — кодирует всё, кроме безопасных. encodeURI сохраняет структуру URL.
Символ
encodeURIComponent
encodeURI
A–Z a–z 0–9
Не кодируется
Не кодируется
- _ . ! ~ * ' ( )
Не кодируется
Не кодируется
: / ? # @ &
%3A %2F %3F %23 %40 %26
Не кодируется
= + , ;
%3D %2B %2C %3B
Не кодируется
Пробел
%20
%20
А–Я а–я (кириллица)
%D0%9F… (UTF-8)
%D0%9F… (UTF-8)
Китайский, арабский, эмодзи
%XX%XX… (UTF-8)
%XX%XX… (UTF-8)
03

О URL-кодировании — что стоит знать

URL-кодирование (percent-encoding) представляет любые символы в URL с помощью ASCII-последовательностей вида %XX, где XX — шестнадцатеричный код байта в UTF-8. Нужно потому, что URL может содержать только ограниченный набор безопасных символов.

Выбор функции зависит от задачи: encodeURIComponent — для значения одного параметра запроса. encodeURI — для полного URL, когда нужно сохранить его синтаксис (двоеточия, слэши, вопросительные знаки).

encodeURIComponent

чаще всего
«привет мир!» → %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80!
Кодирует всё, кроме букв, цифр и `- _ . ! ~ * ' ( )`. Символы `: / ? # @ & =` тоже кодируются — значение параметра не «сломает» структуру URL. Использовать для значений параметров ?q=… и данных форм.

encodeURI

для полных URL
«https://сайт.рф/поиск» → «https://%D1%81%D0%B0%D0%B9%D1%82.%D1%80%D1%84/…»
Сохраняет структуру URL: не кодирует `: / ? # [ ] @ ! $ & ' ( ) * + , ; =`. Использовать когда нужно передать полный адрес как строку, не разрушая его синтаксис.

Декодирование

%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82 → «привет»
Обратная операция — переводит %XX-последовательности обратно в читаемый текст. Поддерживается формат `+` вместо пробела из HTML-форм (application/x-www-form-urlencoded).

Percent-encoding

RFC 3986
%XX — где XX — hex-код байта в UTF-8
Каждый небезопасный символ представляется как `%XX`, где XX — hex-код байта в UTF-8. Кириллица занимает 2 байта (6 символов %XX%XX на букву), эмодзи — 4 байта.
04

Частые вопросы

Вставьте адрес в поле — кириллица и спецсимволы заменятся процентными последовательностями. Одна кириллическая буква в UTF-8 занимает два байта и превращается в шесть знаков вида `%D0%BF`. Такой адрес одинаково понимают все системы, включая почтовые клиенты и мессенджеры, которые ломают ссылку с юникодом при пересылке.

Обновлено

«» добавлен в избранное