Перейти к содержимому

%20 · %C3%A9 · encodeURIComponent

Кодирование и декодирование URL

Кодирование URL заменяет небезопасные символы знаком % и двумя шестнадцатеричными цифрами: пробел становится %20, а é — %C3%A9. Выберите кодирование, декодирование или разбор, затем введите или вставьте текст.

Всё выполняется в этой вкладке, ничего не загружается. Текст не из ASCII перед экранированием преобразуется в UTF-8.

Scanned by NortonTM Safe Web

Коротко

Цена
Без оплаты
Аккаунт
Не нужен
Стандарты
RFC 3986 (URI), WHATWG URL Standard
Режимы
Кодирование, декодирование и разбор
Набор символов
UTF-8
Загрузка
Нет — текст остаётся во вкладке вашего браузера

Процентное кодирование распространённых символов

Каждая ячейка получена кодировщиком и декодировщиком на этой странице. Символ ␣ обозначает пробел.

Кодирование одного символа
СимволencodeURIComponentencodeURIФорма (+ вместо пробела)
␣%20%20+
!!!%21
"%22%22%22
#%23#%23
$%24$%24
%%25%25%25
&%26&%26
'''%27
(((%28
)))%29
****
+%2B+%2B
,%2C,%2C
/%2F/%2F
:%3A:%3A
;%3B;%3B
=%3D=%3D
?%3F?%3F
@%40@%40
[%5B%5B%5B
]%5D%5D%5D
~~~%7E
é%C3%A9%C3%A9%C3%A9
€%E2%82%AC%E2%82%AC%E2%82%AC
😀%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80
Декодирование одной последовательности
ПоследовательностьdecodeURIComponentdecodeURIФорма
%2F/%2F/
%3F?%3F?
%23#%23#
%20␣␣␣
%2B+%2B+
%41AAA

Как закодировать или декодировать URL

1

Выберите режим

Выберите «Кодировать», чтобы экранировать текст, «Декодировать», чтобы прочитать экранированный текст, или «Разобрать», чтобы разделить весь URL на протокол, хост, путь, запрос и фрагмент.

2

Выберите метод

Для одного значения, например параметра запроса, используйте метод для компонента. Для полного адреса — метод для всего URL. Для данных, отправляемых HTML-формой, — метод для формы.

3

Вставьте и скопируйте

Введите или вставьте текст. Результат обновляется по мере ввода, рядом есть кнопка «Копировать». О неверной последовательности % сообщается с указанием позиции.

Как работает процентное кодирование

Процентное кодирование (RFC 3986) записывает байт как % и две шестнадцатеричные цифры. Сначала текст преобразуется в UTF-8, поэтому é — это 2 байта (%C3%A9), € — 3 байта (%E2%82%AC), а 😀 — 4 байта (%F0%9F%98%80). Буквы, цифры и - _ . ~ кодировать не нужно никогда. Зарезервированные символы, такие как / ? # & = + и :, выполняют в URL определённую роль, поэтому нужно ли их кодировать, зависит от того, куда попадёт текст.

encodeURIComponent предназначен для одной части URL, например значения запроса: он кодирует / ? # & = + и :. encodeURI предназначен для всего URL: он оставляет эти символы как есть, чтобы адрес сохранил структуру. Кодирование форм (application/x-www-form-urlencoded) записывает пробел как + вместо %20 и дополнительно кодирует ~ и ! ' ( ). При декодировании % без двух шестнадцатеричных цифр после него отклоняется, а его позиция сообщается.

Вопросы о кодировании URL

Чем отличаются encodeURI и encodeURIComponent?

encodeURIComponent кодирует всё, кроме букв, цифр и - _ . ! ~ * ' ( ), поэтому кодирует и / ? # & = + и :. encodeURI оставляет эти символы, чтобы целый URL продолжал работать. Метод для компонента используйте для значения, например a/b превращается в a%2Fb, а encodeURI — для полного адреса.

Почему пробел в одном месте %20, а в другом +?

%20 — это процентное кодирование пробела, оно допустимо в любом месте URL. + вместо пробела относится только к кодированию форм (application/x-www-form-urlencoded) — формату строки запроса, которую отправляет HTML-форма. Настоящий знак плюс в обоих случаях — %2B.

Как закодировать символы Юникода в URL?

Преобразуйте текст в UTF-8, затем запишите каждый байт как %XX. é даёт %C3%A9, € даёт %E2%82%AC, а 😀 даёт %F0%9F%98%80. Эта страница делает это в каждом методе кодирования.

Какие символы в URL нужно кодировать?

Пробелы, двойные кавычки, < и > и все символы не из ASCII кодируются всегда. Буквы, цифры и - _ . ~ — никогда. Зарезервированные символы, такие как ? и &, кодируются только тогда, когда они являются данными, а не частью структуры URL.

Почему при декодировании сообщается о недопустимой последовательности %?

После % должны идти две шестнадцатеричные цифры. 100% не проходит, потому что после % ничего нет, так же как и ab%zz. Страница сообщает позицию неверного %. Экранированные байты, которые не образуют допустимый UTF-8, например %FF, тоже отмечаются.

Может ли эта страница разделить URL на части?

Да. Режим разбора использует парсер URL браузера, чтобы вывести протокол, имя пользователя, хост, порт, путь, запрос и фрагмент, и показывает каждый параметр запроса с его декодированным значением. Пароль в URL отмечается как присутствующий и никогда не выводится.