Как пользоваться
- Выберите «Кодировать» или «Декодировать».
- Для отдельного значения (например, параметра запроса) выберите «Компонент», а для полного адреса — «Полный URL».
- Введите или вставьте текст. Результат сразу появится справа (или ниже на телефоне).
- Скопируйте результат или нажмите «Использовать результат как входные данные», чтобы выполнить обратное преобразование и проверить результат.
Как это работает
В URL можно использовать лишь ограниченный набор символов ASCII. Все остальные символы, включая пробелы, буквы с диакритическими знаками и эмодзи, записываются в виде процентовых кодов: символ преобразуется в байты UTF-8, и каждый байт представляется как % и две шестнадцатеричные цифры. Пробел превращается в %20, é — в %C3%A9, а € — в %E2%82%AC.
Режим «Компонент» использует JavaScript-функции encodeURIComponent и decodeURIComponent. Они экранируют все символы со специальным значением в URL, включая / ? # & = + : и @, поэтому результат можно безопасно подставить в значение параметра запроса или отдельный сегмент пути. Без изменений остаются только A–Z, a–z, 0–9 и - _ . ! ~ * ' ( ).
Режим «Полный URL» использует encodeURI и decodeURI. Он рассчитан на уже готовый URL и оставляет без изменений зарезервированные символы ; , / ? : @ & = + $ #, чтобы адрес продолжал работать. При декодировании decodeURI также оставляет без изменений коды этих зарезервированных символов: %2F остаётся %2F, потому что замена на / изменила бы смысл URL.
Режим данных формы соответствует application/x-www-form-urlencoded — формату, который браузеры используют при отправке HTML-форм: пробел записывается как +, а не %20. При декодировании в этом режиме каждый + превращается в пробел; настоящий знак плюса нужно записывать как %2B.
Некорректные данные не удаляются. Если после % нет двух шестнадцатеричных цифр или последовательность кодов не образует допустимую UTF-8, инструмент укажет место ошибки и сохранит текст, чтобы вы могли его исправить.
Примеры
Добавление значения в строку запроса
Чтобы найти «Rock & Roll» по адресу https://example.com/search?q=…, закодируйте только значение в режиме «Компонент»: Rock%20%26%20Roll. Без кодирования символ & завершил бы параметр q и начал новый параметр с именем « Roll».
Исправление URL с пробелами и диакритическими знаками
В режиме «Полный URL» адрес https://example.com/menu/crème brûlée.html превращается в https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html. Косые черты и двоеточие остаются без изменений, поэтому ссылка продолжает работать.
Чтение данных отправленной формы из журнала
В журнале сервера указано name=Jane+Doe&city=S%C3%A3o+Paulo. Декодируйте строку в режиме «Компонент», включив параметр «Считать + пробелом», чтобы получить name=Jane Doe&city=São Paulo.
Часто задаваемые вопросы
Чем отличаются encodeURI и encodeURIComponent?
encodeURIComponent экранирует символы, разделяющие части URL (/ ? # & = + : @ и другие), поэтому эта функция предназначена для отдельного фрагмента URL. encodeURI оставляет эти символы без изменений и предназначена для полного URL. Частая ошибка — использовать encodeURI для значения параметра запроса: символы & и = внутри значения не будут экранированы и нарушат структуру строки запроса.
Как записывать пробел: %20 или +?
В пути URL пробел всегда записывается как %20. В строке запроса встречаются оба варианта: %20 допустим везде, а + обозначает пробел только в данных формы (application/x-www-form-urlencoded) — именно так браузеры отправляют HTML-формы и многие серверные платформы обрабатывают строки запроса. Если сомневаетесь, используйте %20.
Почему при декодировании возникает ошибка?
Декодирование завершается ошибкой, если после знака % нет двух шестнадцатеричных цифр (например, «50% off») или закодированные байты не образуют допустимую UTF-8. Обычно это означает, что текст был закодирован в устаревшей кодировке, например Latin-1 (é как %E9 вместо %C3%A9). В сообщении об ошибке указана позиция проблемы.
Почему %2F не превратился в косую черту в режиме «Полный URL»?
decodeURI намеренно оставляет без изменений коды зарезервированных символов, таких как / ? # & и =, поскольку их декодирование может изменить разделение URL на части. Чтобы декодировать все коды, используйте режим «Компонент».
Какие символы никогда не кодируются?
В обоих режимах без изменений остаются A–Z, a–z, 0–9 и - _ . ! ~ * ' ( ). В режиме «Полный URL» также остаются без изменений ; , / ? : @ & = + $ и #.
Конфиденциальность
Кодирование и декодирование выполняются прямо в браузере с помощью встроенных функций JavaScript. Ваши текст и URL не отправляются на сервер, не сохраняются и не попадают в аналитику.