tigtools

Кодировщик / декодировщик URL

Кодируйте текст для URL или преобразуйте коды вроде %20 обратно в читаемый текст. Выберите «Компонент» для отдельного значения или «Полный URL» для целого адреса.

Работает в браузере Без регистрации

Направление
Что нужно закодировать?

Компонент (encodeURIComponent) кодирует всё, кроме букв, цифр и символов - _ . ! ~ * ' ( ). Используйте этот режим для отдельного значения параметра, поля формы или сегмента пути.

Как пользоваться

  1. Выберите «Кодировать» или «Декодировать».
  2. Для отдельного значения (например, параметра запроса) выберите «Компонент», а для полного адреса — «Полный URL».
  3. Введите или вставьте текст. Результат сразу появится справа (или ниже на телефоне).
  4. Скопируйте результат или нажмите «Использовать результат как входные данные», чтобы выполнить обратное преобразование и проверить результат.

Как это работает

В 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 не отправляются на сервер, не сохраняются и не попадают в аналитику.