Кодировщик URL

Целый адрес и отдельное значение запроса имеют разные границы.

Кодируйте для нужной части адреса

Целый адрес и отдельное значение запроса имеют разные границы.

Шаг 1

Выберите режим

Компонент для значения, целый URI для сохранения структуры, форма для пробелов как +.

Шаг 2

Введите исходный текст

Вставьте некодированный текст и проверьте байты UTF-8. Адрес не открывается.

Шаг 3

Используйте результат

Скопируйте или скачайте TXT. Ссылка на инструмент не содержит введённый текст.

Практические задачи

Создать поисковый запрос

Для поиска A&B + café кодируйте только значение в режиме компонента: A%26B%20%2B%20caf%C3%A9. Вставьте после q= в пример https://example.test/search?q=, оставив структуру вне преобразования.

URI целиком сохраняет структурный амперсанд. Режим не угадает, что символ уже собранного сырого запроса должен быть данными. Определите границу до кодирования, не после неожиданного ответа.

Проверить форму

При проверке формы сравните A+B C в компоненте и значении формы: A%2BB%20C и A%2BB+C. Оба защищают исходный плюс, но по-разному представляют пробел.

Важен протокол получателя, не короткий результат. Декодер формы считает + пробелом, компонентный сохраняет. Этот инструмент не собирает имена, повторные параметры или полный запрос.

Международный текст

Проверьте café перед UTF-8-получателем. Ввод занимает пять байт, caf%C3%A9 — девять ASCII-байт и две последовательности.

Числа описывают представление, не слова и визуальную сложность. Готовая акцентированная буква и буква с комбинируемой меткой могут выглядеть одинаково с разными байтами. Страница не нормализует и не выбирает представление подписанного запроса.

Приветствие ClockTools, закодированное как компонент URI
В режиме компонента URI запятая в приветствии заменяется на %2C. Результат предназначен для вставки в URL; сайт по этому адресу не запрашивается.

Выберите режим по границе получения

Компонент URI подходит для одного значения запроса или сегмента пути. Защищает &, =, /, ? и # от структурной роли при вставке. URI целиком предполагает готовую нужную структуру разделителей. Ни один режим не определяет задуманные данные неоднозначной строки.

folder/name превращается в folder%2Fname как компонент и остаётся folder/name как URI целиком. Это значение с косой чертой против сохранённого разделителя пути. Получатель может иметь другие правила: кодирование не гарантирует принятие такого идентификатора.

JavaScript сохраняет пунктуацию, которую строгая конвенция RFC 3986 может экранировать. Это отличие совместимости, не четвёртый режим. Если API требует дополнительное экранирование или канонизацию, используйте его сериализатор; правдоподобный результат не доказывает соответствие. Определения ECMAScript и исторические наборы символов.

Данные отдельно от структуры

  1. A&BИсходное значение
  2. A%26BКодированное значение
  3. ?q=A%26BЗначение в запросе
Фиксированный пример: & относится к значению, а не к структуре запроса.

Из символов в байты адреса

Процентная последовательность записывает байт как % и две шестнадцатеричные цифры. café превращается в caf%C3%A9, потому что é занимает два байта UTF-8. Это не шифрование.

Косая черта, & и # могут задавать структуру адреса. Сначала кодируйте значение, затем вставляйте его. Кодирование всего адреса как компонента скрывает и разделители.

Режим целого URI использует encodeURI и сохраняет зарезервированные разделители. Он не проверяет домены, не блокирует опасные схемы и не создаёт строгую каноническую форму RFC. Категории символов в RFC 3986.

Почему формы используют плюс

Пробелы превращаются в +, а настоящий плюс — в %2B. Режим формы также кодирует !, апострофы, скобки и ~, которые компонентный режим JavaScript оставляет без изменений.

Здесь обрабатывается одно значение. a=b&c=d не собирается как два независимых поля. Для полной коллекции параметров используйте структурированный сериализатор.

Повторное кодирование %2F даёт %252F. При вложении это бывает нужно, но может указывать на лишний слой. Согласуйте с получателем один слой на каждой границе. Сериализация форм WHATWG.

Сравните результат до включения в URL

Таблица сохраняет ввод и меняет режим. Плюс — данные и становится %2B в режимах значений. Пробел — %20 в компоненте и + в форме. Тильда и восклицание показывают, что режим меняет не только запись пробелов.

Байты ввода используют UTF-8. Байты и кодовые точки результата считают выходную строку с %, шестнадцатеричными цифрами и пунктуацией. %HH представляет байт на границе, но три выходных символа. Счётчики не считают графемы и не проверяют серверный предел.

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

Фиксированный ввод: данные и структура по режиму
ВводРежимКодированный результат
A&BКомпонент URIA%26B
A+B CКомпонент URIA%2BB%20C
A+B CЗначение формыA%2BB+C
folder/nameКомпонент URIfolder%2Fname
folder/nameURI целикомfolder/name
~!Компонент URI~!
~!Значение формы%7E%21

Буквальные примеры, не полные тела запросов. Границы и правила получателя задаются отдельно.

Исправьте ошибку без изменения неверного слоя

Если %2F стал %252F, закодирован уже присутствующий знак процента. URI целиком тоже кодирует буквальные знаки процента, а не сохраняет всё ранее экранированное. Вернитесь к оригиналу, кроме намеренного внешнего слоя с кодированным значением. Не переписывайте подписанный URL экспериментальным декодированием и повтором.

Ошибка Unicode может означать непарный суррогат. Страница отвергает его вместо незаметной замены. Получите корректный исходник; произвольная замена меняет идентификатор. Для старой байтовой кодировки нужен другой конвертер, не этот UTF-8.

Копирование и TXT передают точный результат. При отказе буфера выделите и скопируйте вручную, при отказе загрузки копируйте. Ссылка передаёт страницу без ввода, запроса и фрагмента. Локальное преобразование не защищает историю буфера и файлы; кодирование не проверяет безопасность.

Методика и ограничения

Локальное преобразование выполняет один проход encodeURIComponent, encodeURI или кодирования значения формы. Счётчики показывают байты UTF-8 и кодовые точки Unicode, не графемы.

Кодирование не шифрует, не очищает и не проверяет URL. Одиночные суррогаты Unicode отклоняются. Полные формы и строгий режим RFC не предусмотрены.

Сохраните оригинал и сообщите режим с вымышленным примером. Не отправляйте токены или подписанные частные URL. Перед изменением рабочих ссылок проверьте правила получателя.

Методика и ограничения · Правила исправлений

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

Какой режим нужен для значения запроса?

Компонент URI, если протокол явно не требует кодирования формы.

Является ли кодирование шифрованием?

Нет. Текст можно восстановить без секрета.

Почему %2F стало %252F?

Знак % был закодирован повторно.

Почему URI целиком сохраняет амперсанд?

Считает зарезервированные разделители структурой. Не знает, что амперсанд сырого значения должен быть данными. Кодируйте значение отдельно компонентом или требуемой формой, структуру собирайте подходящим сериализатором.

Можно кодировать полную форму здесь?

Только как значение, обычно не как задумано. a=b&c=d не разбирается на поля. Полный сериализатор отдельно кодирует имена и значения, соединяет = и &. Повторные имена и пустые поля тоже требуют структуры.

Почему ~ и ! меняются в форме?

Набор формы экранирует их, компонент JavaScript сохраняет. * остаётся без escape и в форме. Выбирайте по получателю, не виду. Дополнительного строгого RFC-режима для других требований API нет.

Можно сократить вывод удалением последовательностей?

Не вслепую. Восстановленный разделитель становится структурой не там; многобайтному символу нужны все UTF-8-байты. Узнайте, считает ли предел байты, декодированный текст или весь запрос. Страница не знает контракт.

Ссылка включает преобразованный текст?

Нет. Копирует адрес без ввода, результата, текущего запроса и фрагмента. Текст передаётся сознательным копированием или загрузкой. Ссылка декодера тоже не несёт данные: сохраните оригинал до перехода.