RUV CalculatorКодирование и декодирование URLhttps://calc.ruvlabs.com/ru/c/url-encoder

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

Процентное кодирование в обе стороны

Дополнительные настройки

Результат

Подробности
Длина

Как вставить это в URL?

%EA%B3%84%EC%82%B0%EA%B8%B0%20%EA%B2%80%EC%83%89

Пример с начальными значениями. Измените поля выше, чтобы получить свой результат.

Что делает процентное кодирование

В URL допустим лишь ограниченный набор символов. Всё остальное переводится в байты UTF-8, и каждый байт записывается знаком процента и двумя шестнадцатеричными цифрами. Пробел становится %20, буква «я» — %D1%8F, а китайский, японский или корейский символ из трёх байтов — девятью знаками.

Этот инструмент различает кодирование целого адреса и кодирование одного значения. В целом адресе структурные знаки вроде косых черт и вопросительного знака должны уцелеть; в отдельном значении — скажем, в поисковом запросе — те же знаки, наоборот, нужно закодировать, иначе параметр разорвётся.

Декодирование идёт в обратную сторону, превращая каждую тройку с процентом обратно в байт и читая итог как UTF-8. Чаще всего оно нужно, чтобы восстановить исходный поисковый запрос из адреса, записанного в журнале или в реферере.

Выбрать не ту область кодирования

Закодировав одно значение так, будто это целый адрес, вы обрежете параметр. Если в поисковом запросе есть амперсанд и его оставили как есть, сервер прочитает с этого места новый параметр. Значениям в строке запроса нужно кодирование на уровне компонента.

Обратное тоже не работает: кодирование целого адреса на уровне компонента переписывает косые черты и двоеточие, и ссылка перестаёт открываться. Кодирование компонента уместно, когда готовый URL везут внутри другого URL как параметр, и неуместно, когда результат идёт прямо в адресную строку.

Закодировав уже закодированную строку ещё раз, вы превратите каждый знак процента в %25 и получите двойной слой. Несколько вхождений %25 в выводе почти всегда означают именно это, и восстановление исходного текста потребует тогда двух проходов декодирования.

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

Что меняет параметр значения запроса?

Включённым он использует encodeURIComponent, выключенным — encodeURI. Разница в том, экранируются ли разделители : / ? # [ ] @. Выключите, чтобы закодировать адрес целиком и сохранить косые черты; включите для значения одного параметра, чтобы амперсанд внутри не был прочитан как разделитель.

Почему адреса с нелатинскими буквами такие длинные?

Процентное кодирование превращает каждый байт UTF-8 в три знака. Кириллическая буква — два байта, то есть шесть знаков; китайский, японский или корейский символ — три байта, то есть девять.

Пробел — это + или %20?

Встречается и то и другое. Отправка форм использует +, обычные пути в адресах — %20. Этот инструмент выдаёт %20; принимает ли сервер ещё и + как пробел, зависит от его реализации.

Расчёт выполняется в этом браузере. Проверьте введённые значения, прежде чем полагаться на результат.