Как кодировать и декодировать URL: Полное руководство
Быстрый ответ
URL-кодирование преобразует unsafe символы в %XX-последовательности, где XX — hex-значение байта. Пробелы становятся %20 (или + в form data), китайские символы — multi-byte %XX-последовательностями. Используйте наш бесплатный URL Encoder и URL Decoder —вся обработка локально.
Введение
URL-кодирование, также percent-encoding, — механизм кодирования reserved и unsafe символов в URL для безопасной передачи через интернет. URL могут содержать только ограниченный набор ASCII-символов; любой другой символ (пробелы, не-ASCII буквы, символы) должен быть percent-кодирован как последовательность, начинающаяся с %, за которой следуют две hex-цифры.
Шаг за шагом
-
Определите, что требует кодирования
Символы, не входящие в незарезервированный набор (AZ, a-z, 0-9, -, ., _, ~), должны быть закодированы в процентах. Сюда входят пробелы, разделители запросов, такие как = и &, косая черта и все символы, отличные от ASCII, такие как китайский, арабский или эмодзи.
-
Закодируйте URL или строку запроса.
Вставьте текст в инструмент кодировщика URL. Он использует encodeURIComponent() для кодирования каждого зарезервированного символа. Результат мгновенно появляется в поле вывода.
-
Скопируйте закодированный результат
Нажмите кнопку «Копировать», чтобы скопировать строку в процентном кодировании. Теперь вы можете безопасно встроить его в параметр запроса URL, запрос API или отправку формы.
-
Раскодируйте закодированный URL
Вставьте закодированный URL или строку запроса в инструмент декодера URL. Он использует decodeURIComponent() для восстановления исходных символов. Убедитесь, что декодированный вывод соответствует вашим ожиданиям.
-
Проверка крайних случаев
Убедитесь, что пробелы декодируются правильно (%20 или +), что многобайтовые последовательности UTF-8 декодируются до правильного символа и что уже закодированные строки не кодируются дважды.
Примеры
Кодировать текст с пробелом
Вход: Hello World
Выход: Hello%20World
Кодирование разделителя пути
Вход: a/b
Выход: a%2Fb
Кодируйте китайские символы (UTF-8)
Вход: 你好
Выход: %E4%BD%A0%E5%A5%BD
Декодировать закодированный параметр запроса
Вход: key%3Dvalue%26foo%3Dbar
Выход: key=value&foo=bar
Распространенные проблемы
- Двойное кодирование: кодирование уже закодированной строки превращает %20 в %2520. Перед повторным кодированием всегда проверяйте, закодирован ли уже ввод.
- Путаница encodeURI с encodeURIComponent: encodeURI сохраняет зарезервированные символы, такие как /, ? и &, нетронутыми для полного URLs, тогда как encodeURIComponent кодирует все для значений параметров запроса.
- Обработка пространства: %20 — это форма с процентным кодированием; + действителен только в данных тела приложения/x-www-form-urlencoded, а не в пути URL или строке запроса согласно RFC 3986.
- Устаревшие кодировки, отличные от UTF-8: современные браузеры кодируют как UTF-8, но устаревшие системы могут использовать GBK или Latin-1, вызывая моджибаке при декодировании на другой стороне.
Советы
- Используйте encodeURIComponent() для отдельных значений параметров запроса и encodeURI() для всего URLs, который уже правильно сформирован.
- При построении строк запроса кодируйте значение, а не разделители = или & — кодируйте каждое значение отдельно, а затем объединяйте его с помощью &.
- Используйте наши инструменты кодирования и декодера URL для отладки вызовов API, которые возвращают 400 ошибок из-за неверных строк запроса.
- Всегда декодируйте на стороне сервера, используя одну и ту же кодировку символов (UTF-8), чтобы избежать моджибаке.