alltools.one
Web Development
2026-02-12
7 min
alltools.one Team
urlencodingweb-developmenthttpapi

Руководство по URL-кодированию: зачем и как кодировать URL

Задумывались, почему пробелы в URL превращаются в %20, а амперсанды — в %26? URL-кодирование (также называемое процентным кодированием) преобразует символы, небезопасные для URL, в формат, понятный веб-серверам.

Зачем нужно URL-кодирование

URL могут содержать только ограниченный набор ASCII-символов. Специальные символы, пробелы и не-ASCII текст нуждаются в кодировании для безопасной передачи. Без кодирования URL ломаются непредсказуемым образом — пробел может обрезать URL, а амперсанд может быть ошибочно принят за разделитель параметров.

Попробуйте наш URL-кодировщик/декодировщик, чтобы увидеть, как любой текст преобразуется при кодировании для URL.

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

Безопасные символы (кодирование не требуется)

Буквы (A-Z, a-z), цифры (0-9) и эти символы: -, _, ., ~

Зарезервированные символы (кодировать при использовании как данные)

СимволЗакодированныйНазначение в URL
:%3AРазделитель схемы
/%2FРазделитель пути
?%3FНачало строки запроса
#%23Идентификатор фрагмента
&%26Разделитель параметров
=%3DРазделитель ключ-значение
+%2BЧасто обозначает пробел
@%40Разделитель информации о пользователе
%%25Индикатор кодирования

Всегда кодировать

Пробелы (%20), не-ASCII символы (байты UTF-8 кодируются), и любой символ за пределами безопасного набора.

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

Параметры запроса

Самый распространённый случай использования. При построении поисковых URL или API-запросов:

https://api.example.com/search?q=hello%20world&lang=en

Данные форм

HTML-формы с method="GET" автоматически URL-кодируют значения полей. Пробелы становятся + при форм-кодировании (немного отличается от процентного кодирования).

Сегменты пути

Имена файлов и идентификаторы ресурсов в путях URL тоже нуждаются в кодировании. Файл с именем my report.pdf становится my%20report.pdf в URL.

Кодирование на разных языках

JavaScript:

encodeURIComponent('hello world & more')
// "hello%20world%20%26%20more"

decodeURIComponent('hello%20world')
// "hello world"

Python:

from urllib.parse import quote, unquote
quote('hello world & more')
# 'hello%20world%20%26%20more'

Типичные ошибки

  1. Двойное кодирование — кодирование уже закодированного URL превращает %20 в %2520
  2. Использование encodeURI вместо encodeURIComponentencodeURI пропускает зарезервированные символы, важные в значениях параметров запроса
  3. Некодирование знака + — в URL + может означать пробел. Кодируйте буквальные плюсы как %2B
  4. Забывание о не-ASCII символах — Unicode-символы сначала кодируются в UTF-8, затем процентно кодируются

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

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

encodeURI кодирует полный URL, пропуская символы вроде :, /, ?, #. encodeURIComponent кодирует всё, кроме незарезервированных символов — используйте его для отдельных значений параметров запроса.

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

Форм-кодирование (application/x-www-form-urlencoded) использует + для пробелов. Стандартное процентное кодирование использует %20. Оба варианта валидны в разных контекстах.

Связанные ресурсы

Published on 2026-02-12
URL Encoding Guide: Why and How to Encode URLs | alltools.one