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

Закодируйте текст для безопасного использования в URL (percent-encoding) или декодируйте обратно. Важно для параметров запроса и ссылок.

Что такое кодировка URL

Кодирование URL-адреса, также называемое процентным кодированием, заменяет небезопасные символы в веб-адресе знаком процента, за которым следует код. Пробел становится %20, амперсанд становится %26 и так далее. Это позволяет вам помещать в URL-адрес любой текст, пробелы, диакритические знаки и символы, не нарушая его. Этот инструмент кодирует текст для безопасного использования в URL-адресах и декодирует текст в процентном кодировании обратно в читаемую форму.

Почему это необходимо

URL-адреса имеют ограниченный набор символов, которые они могут безопасно содержать. Когда вы помещаете поисковый запрос, значение параметра или сегмент пути, который включает пробелы, косые черты, вопросительные знаки или неанглийские буквы, непосредственно в URL-адрес, эти символы могут быть неправильно истолкованы и нарушить ссылку. Кодирование преобразует их в безопасное представление, которое серверы и браузеры правильно декодируют. Любой, кто программно создает строки запросов, вызовы API или ссылки, нуждается в этом постоянно.

Кодирование и декодирование

Кодирование берет читаемый текст и делает его безопасным для URL-адресов, что важно при создании ссылки или параметра запроса. Декодирование делает обратное, превращая строку, закодированную в процентах, обратно в читаемый текст, что полезно, когда вы читаете URL-адрес, который вам отправил кто-то, отлаживает вызов API или проверяет, что на самом деле содержит параметр. Этот инструмент выполняет оба действия одним щелчком мыши и правильно обрабатывает символы с диакритическими знаками и неанглийскими символами через UTF-8.

Распространенные ситуации

Создание URL-адреса поиска, в котором запрос содержит пробелы и символы. Передача значения, содержащего амперсанд или знак равенства, через параметр запроса без нарушения структуры URL-адреса. Чтение длинного закодированного URL-адреса, чтобы понять, на что он указывает. Создание запросов API, в которых необходимо закодировать параметры. Поскольку он запускается в вашем браузере, вы можете безопасно кодировать или декодировать значения, содержащие конфиденциальные данные.

Что такое кодировка URL

Кодирование URL-адреса, также называемое процентным кодированием, заменяет небезопасные или зарезервированные символы в URL-адресе знаком процента, за которым следуют две шестнадцатеричные цифры. Пробел становится %20, амперсанд становится %26 и так далее. URL-адреса ограничены небольшим набором символов ASCII по стандарту RFC 3986, поэтому все, что находится за пределами этого набора, пробелы, диакритические знаки, смайлики или зарезервированные символы, такие как ? & = # при использовании в качестве данных должен быть закодирован для передачи от браузера к серверу без нарушения структуры URL-адреса.

encodeURI против encodeURIComponent

JavaScript предлагает две функции кодирования, и неправильный выбор — распространенная ошибка. encodeURIComponent кодирует все зарезервированное и является тем, что вам нужно для отдельных значений, которые вы вводите в строку запроса, условия поиска, значения параметра и цели перенаправления. encodeURI сохраняет символы структуры URL, такие как / ? & = и предназначен для кодирования всего URL-адреса, сохраняя при этом его работоспособность. Эмпирическое правило: используйте encodeURIComponent для значений внутри URL-адреса и encodeURI только для всего URL-адреса. Этот инструмент кодирует компоненты, что вам нужно большую часть времени.

Распространенные ошибки кодирования URL-адресов

Доминируют две ошибки. Двойное кодирование происходит, когда вы кодируете уже закодированную строку, %20 становится %2520, что разрывает ссылку; кодируйте только необработанный текст, а не уже закодированный URL-адрес, и сначала декодируйте, если вы не уверены. Другой — это неоднозначность знака плюс: в строке запроса + может означать пробел (из кодировки HTML-формы), но в пути URL-адреса это буквальный плюс. В случае сомнений используйте %20 для пробела, который везде однозначен. Также помните, что незакодированный символ & внутри значения будет ошибочно воспринят как разделитель параметров, что приведет к разделению ваших данных.

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

В чем разница между кодировкой URL и Base64?
Кодирование URL-адресов делает текст безопасным для веб-адресов за счет процентного кодирования небезопасных символов. Base64 — это другая кодировка для обеспечения текстовой безопасности двоичных данных. Они служат разным целям и не являются взаимозаменяемыми.
Почему пространство становится %20?
Пробелы в URL-адресах не допускаются, поэтому при кодировании они заменяются на %20 — безопасное представление, которое браузеры и серверы декодируют обратно в пробел. В некоторых контекстах вместо этого используется знак плюса.
Обрабатывает ли он акцентированные и неанглийские символы?
Да. Инструмент кодирует с помощью UTF-8, поэтому буквы с диакритическими знаками и символы любого языка кодируются и декодируются правильно.
Когда мне следует декодировать URL-адрес?
Если вы хотите прочитать, что на самом деле содержит закодированный URL-адрес или параметр, это полезно для отладки вызовов API, проверки ссылок или понимания длинного закодированного адреса, который кто-то вам отправил.
Мои данные конфиденциальны?
Да. Кодирование и декодирование происходят в вашем браузере без загрузки.
В чем разница между кодированием и декодированием URL?
Кодирование преобразует небезопасные символы в процентные коды (пробел становится %20), поэтому текст внутри URL-адреса безопасен. Декодирование меняет его, превращая %20 обратно в пространство для отображения. Используйте кодирование для создания URL-адреса и декодирование для его чтения.
Когда мне следует использовать encodeURIComponent, а не encodeURI?
Используйте encodeURIComponent для отдельных значений внутри URL-адреса, например значений параметров запроса, он кодирует все зарезервированное. Используйте encodeURI только для всего URL-адреса, который вы хотите сохранить работоспособным, поскольку он сохраняет структурные символы, такие как / ? & =.
Почему в моем URL-адресе было %2520?
Это двойное кодирование: уже закодированная строка была закодирована снова, поэтому % в %20 стал %25. Кодируйте только необработанный текст, а не уже закодированный URL. Если вы не уверены, сначала декодируйте, а затем закодируйте один раз.
Должен ли я кодировать пробел как %20 или +?
%20 является стандартом и работает везде. Знак + означает только пробел в данных формы строки запроса и является буквальным плюсом в URL-пути. Если сомневаетесь, используйте %20.