Кодировщик / декодировщик URL
Percent-кодируйте или декодируйте текст для использования в URL прямо в браузере. Выберите «Компонент», чтобы закодировать одно значение параметра запроса или сегмент пути (экранирует все зарезервированные символы, включая & и /), или «Полный URL», чтобы закодировать целый адрес (оставляет структурные символы вроде :, / и ? как есть) — перепутать эти два режима — самая частая ошибка при работе с URL-кодированием, поэтому этот инструмент делает выбор явным, а не предлагает одну общую кнопку «кодировать».
Что кодировать
Направление
Результат
Скопировано!Кодировщик / декодировщик URL
URL может надёжно переносить лишь ограниченный набор ASCII-символов — буквы, цифры и горстку знаков препинания, у которых уже есть структурное значение (: / ? # [ ] @ ! $ & ' ( ) * + , ; =). Percent-кодирование — это механизм, позволяющий протащить через URL всё остальное: пробел, не-ASCII букву или структурный символ, который вы хотите использовать БУКВАЛЬНО (а не как разделитель), заменяется на «%» и его двузначное шестнадцатеричное значение байта — пробел превращается в «%20», «&» — в «%26» и так далее. В JavaScript для этого есть две встроенные пары функций, и этот инструмент намеренно оставляет их как два отдельных режима, а не одну общую кнопку «кодировать», потому что использование не того режима — самая частая ошибка разработчиков при работе с URL-кодированием.
Режим «Компонент» (encodeURIComponent/decodeURIComponent) экранирует КАЖДЫЙ символ вне небольшого незарезервированного набора (буквы, цифры, - _ . ~), включая структурные символы &, /, ?, :, # и =. Используйте этот режим для одного значения, которое вы собираетесь вставить в URL — значения параметра запроса, сегмента пути, поля формы — именно потому, что он НЕ полагается на то, что в значении нет символов, которые иначе будут восприняты как разделители. Если в самом значении запроса есть «&» (например, поисковая фраза «рок & ролл»), только режим «Компонент» безопасно закодирует его; режим «Полный URL» оставит этот «&» как есть, и он будет ошибочно воспринят как второй разделитель параметров запроса.
«Полный URL» (encodeURI/decodeURI) — обратный случай: у вас уже есть ПОЛНЫЙ, синтаксически корректный URL — схема, хост, путь, строка запроса и всё остальное — и нужно лишь экранировать те немногие символы, которые вообще небезопасны в URL (в основном пробелы и не-ASCII символы), оставив все структурные символы (: / ? # & = и т.д.) точно на своих местах, поскольку они уже выполняют роль разделителей. Если по ошибке пропустить весь URL через режим «Компонент», он «пере-закодируется» — каждый «/» и «:» превратится в «%2F» и «%3A», в результате получится строка, которая больше вообще не работает как URL при вставке в браузер или HTTP-клиент.
Декодирование может завершиться ошибкой на некорректных данных в любом из режимов: одиночный «%», за которым не следуют ровно два корректных шестнадцатеричных символа, приводит к ошибке, а не к молчаливому появлению мусора — этот инструмент показывает понятную ошибку вместо непонятного пустого результата. Оба режима корректно обрабатывают Unicode-текст в обе стороны (кодируя его как байты UTF-8, каждый в собственную последовательность «%XX», точно как это делает адресная строка браузера), поэтому буквы с диакритикой, кириллица, иероглифы CJK и эмодзи преобразуются корректно в любом направлении.
Глоссарий
- Percent-кодирование
- Схема (RFC 3986), представляющая байт, который URL не может нести буквально, как «%» и его двузначное шестнадцатеричное значение — например, пробел становится «%20».
- Зарезервированные символы
- Символы со структурным значением в URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) — режим «Полный URL» оставляет их как есть, режим «Компонент» экранирует их.
- Незарезервированные символы
- Буквы, цифры и - _ . ~ — единственные символы, которые оба режима кодирования всегда оставляют без изменений, поскольку они всегда безопасны в URL.
- encodeURIComponent()
- Встроенная функция JavaScript за режимом «Компонент» этого инструмента — экранирует каждый зарезервированный символ, безопасна для одного значения параметра запроса или сегмента пути.
- encodeURI()
- Встроенная функция JavaScript за режимом «Полный URL» этого инструмента — оставляет структурные/зарезервированные символы как есть, для кодирования целого URL, а не одного значения.
- Строка запроса
- Часть URL вида «?key=value&key2=value2» — каждое значение следует кодировать по отдельности в режиме «Компонент» перед объединением через «&», а не кодировать всю строку запроса целиком.
Аналог в API
У этого инструмента нет аналога в API нашего сервиса — URL-кодирование не является фактом об IP-адресе, поэтому нашему API нечего было бы вернуть здесь. Преобразование выше происходит полностью на вашем устройстве — ничего никуда не отправляется. Если вам нужен именно наш API для поиска информации об IP, он покрывает геолокацию, данные ASN/сети и сигналы угроз/фрода для IP-адреса:
Часто задаваемые вопросы
- В чём разница между режимами «Компонент» и «Полный URL»?
- Режим «Компонент» экранирует каждый зарезервированный символ (включая &, /, ?, :) и предназначен для одного значения, которое вы собираетесь вставить в URL. Режим «Полный URL» оставляет эти структурные символы как есть и предназначен для целого, уже собранного URL.
- Почему декодирование завершилось ошибкой?
- Во входных данных содержится некорректная percent-последовательность — «%», за которым не следуют ровно два корректных шестнадцатеричных символа. Это действительно некорректное percent-кодирование, а не ошибка инструмента.
- Стоит ли всегда использовать режим «Компонент» для значения параметра запроса?
- Да — любое отдельное значение, вставляемое в строку запроса, сегмент пути или поле формы, должно кодироваться в режиме «Компонент», поскольку только он безопасно экранирует символы вроде &, которые иначе будут ошибочно восприняты как часть структуры URL.
- Обрабатывает ли этот инструмент символы Unicode, а не только ASCII?
- Да — оба режима сначала кодируют не-ASCII текст как байты UTF-8, точно как это делает адресная строка браузера, поэтому буквы с диакритикой, кириллица, иероглифы CJK и эмодзи преобразуются корректно.
- Отправляется ли мой текст на сервер?
- Нет — всё преобразование выполняется в вашем браузере встроенными функциями JavaScript. Эта страница не делает для этого ни одного сетевого запроса.
- Что произойдёт, если я по ошибке закодирую полный URL в режиме «Компонент»?
- Будет экранирован каждый структурный символ — включая «://» после схемы и каждый «/» в пути — в результате получится строка, которая больше вообще не работает как URL. Используйте режим «Полный URL» для целого адреса.
Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →