URL-кодировщик и декодировщик
Бесплатный онлайн-кодировщик и декодировщик URL. Кодируйте текст или целый адрес, превращайте последовательности %XX обратно в читаемый текст и смотрите, какие параметры на самом деле несёт URL. Всё преобразуется в браузере — ничего не загружается.
Кодировать или декодировать
Вставьте текст, URL или закодированную строку. Преобразование идёт по мере ввода, ничего не загружается и не сохраняется.
Вставьте что-нибудь выше для преобразования.
Пока ничего не преобразовано.
Текст преобразуется локально с помощью JavaScript. Он никогда не отправляется на сервер, не записывается в журналы и не сохраняется.
В URL допустим лишь небольшой набор символов. Всё остальное — пробелы, кириллица, эмодзи или символы, задающие структуру адреса, например & и ?, — записывается как % и две шестнадцатеричные цифры каждого байта UTF-8. Этот инструмент выполняет преобразование в обе стороны и показывает получившийся URL по частям.
Главные преимущества
Типичные сценарии
Как этим пользоваться
- 1.Выберите направление. Выберите Текст → URL-кодировка для кодирования или URL-кодировка → текст для декодирования.
- 2.Решите, что кодируете. Оставьте Кодировать URL целиком выключенным для одного значения, например параметра; включите для полного адреса, который должен работать.
- 3.Вставьте данные. Преобразование идёт по мере ввода. Если это веб-адрес, разбор покажет хост, путь и каждый декодированный параметр.
- 4.Скопируйте или проверьте. Скопируйте результат или нажмите Поменять, чтобы преобразовать его обратно и убедиться, что получится исходный текст.
Процентное кодирование: объяснение
Правила заданы в RFC 3986 и спецификации HTML-форм. Большинство ошибок возникает, когда правило применяют не там, где нужно.
%20 — пробел, %2F — косая черта, %D0%B9 — два байта UTF-8 буквы «й».- . _ ~ никогда не требуют кодирования. Это допустимо, но бессмысленно.: / ? # [ ] @ ! $ & ' ( ) * + , ; = задают структуру URL. Внутри значения их нужно кодировать, иначе меняется смысл адреса.encodeURIComponent кодирует все зарезервированные символы и подходит для значения. encodeURI сохраняет их и подходит для целого адреса.%20 в %2520. Если видите %25 и две шестнадцатеричные цифры, уже закодированное значение закодировали снова.Ключевые возможности
- Кодирует и декодирует, с кнопкой обмена для проверки
- Два режима: одно значение (encodeURIComponent) или URL целиком (encodeURI)
- Пробелы как + по желанию, как в HTML-формах
- Разбирает URL на схему, хост, путь, фрагмент и декодированные параметры
- Показывает, где находится некорректная последовательность %, а не молча ломается
- Предупреждает, если ввод похож на дважды закодированный
- После загрузки работает офлайн; без аккаунта и загрузок
Кодирование — это не экранирование для HTML или SQL
Процентное кодирование делает значение безопасным внутри URL. Оно не делает его безопасным в HTML, JavaScript или запросе к базе данных — у каждого из них свои правила экранирования. Корректно закодированное значение всё ещё может нести инъекцию, когда сервер его декодирует.
Поэтому кодируйте под место назначения: процентное кодирование для URL, HTML-экранирование для страниц, параметризованные запросы для SQL. Если данные передаются в URL в виде Base64, используйте URL-безопасный алфавит — наш кодировщик и декодировщик Base64 умеет и то и другое.
Частые вопросы
Что такое URL-кодирование?⌄
URL-кодирование, или процентное кодирование, записывает недопустимые в URL символы как % и две шестнадцатеричные цифры на каждый байт. Пробел становится %20, а буква «й» — %D0%B9, это два её байта в UTF-8. Так любой текст можно передать в URL, не меняя его смысла.
Чем encodeURI отличается от encodeURIComponent?⌄
encodeURIComponent кодирует все символы с особым значением в URL, включая / ? & и =, поэтому подходит для одного значения, например параметра. encodeURI оставляет их, чтобы целый адрес продолжал работать. Если применить encodeURI к значению, символ & внутри разрежет параметр надвое.
Пробел — это %20 или +?⌄
Оба варианта верны, но в разных местах. В строке запроса HTML-формы (application/x-www-form-urlencoded) пробел — это +. В пути и в большинстве API пробел — %20, а + означает обычный плюс. Если сомневаетесь, %20 безопасен всегда.
Почему в моём URL появилось %2520?⌄
%25 — это закодированный сам знак %, поэтому %2520 — это %20, закодированный второй раз. Уже закодированное значение закодировали повторно. Декодируйте дважды, чтобы получить исходник, и исправьте код, чтобы он кодировал один раз.
URL-кодирование — это шифрование?⌄
Нет. Оно полностью обратимо и не использует ключ, декодировать его может кто угодно. Никогда не прячьте так пароли, токены или персональные данные в URL: адреса попадают в журналы, историю браузера и заголовки Referer.