Как кодировать и декодировать URL

· 3 мин чтения

Если вы когда-либо видели %20 в URL, где должен быть пробел, или %C3%A9 там, где должен быть символ с диакритикой, вы сталкивались с URL-кодированием. Это фундаментальный кирпичик веба, и его понимание помогает отлаживать сломанные ссылки, проблемы API и отправки форм.

Что делает URL-кодирование

URL могут содержать только ограниченный набор безопасных символов: буквы (A-Z, a-z), цифры (0-9) и несколько специальных символов (-, _, ., ~). Всё остальное — пробелы, диакритика, эмодзи, символы вроде &, =, #, ? — должно быть конвертировано в безопасный формат.

URL-кодирование (также называемое percent-encoding) заменяет небезопасные символы на %, за которым следует их шестнадцатеричное байтовое значение:

Символ Закодировано
Пробел %20
& %26
= %3D
# %23
? %3F
/ %2F
@ %40

Когда необходимо URL-кодирование

Как кодировать и декодировать

  1. Выберите кодировать или декодировать — выберите направление. Возьмите encodeURIComponent для параметров запроса или encodeURI для полных URL.
  2. Вставьте ваш ввод — введите текст или URL. Результат обновляется мгновенно.
  3. Скопируйте вывод — используйте результат в вашем коде, API-запросе или браузере.

Советы

Часто задаваемые вопросы

В чём разница между encodeURI и encodeURIComponent?

encodeURI сохраняет действительные символы в структуре URL (слэши, двоеточия, знаки вопроса). encodeURIComponent кодирует всё, кроме букв, цифр и нескольких безопасных символов. Используйте encodeURIComponent для значений параметров запроса, encodeURI для полных URL.

Почему пробелы становятся %20 или +?

В URL-кодировании пробелы становятся %20. В данных формы (application/x-www-form-urlencoded) пробелы становятся +. Оба действительны в своих контекстах, но %20 — это универсальный стандарт для URL.

Должен ли я кодировать URL вручную?

В большинстве случаев ваш язык или фреймворк занимается кодированием автоматически. Ручное кодирование полезно при ручном построении URL, отладке API-запросов или работе со строками запроса, содержащими специальные символы.

Отправляются ли мои данные на сервер?

Нет. Всё кодирование и декодирование происходит в вашем браузере.