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

Текст ↔ percent-encoding

Режим

Поля связаны. encodeURIComponent — для значения параметра, encodeURI — для готового адреса, «Форма» — как в application/x-www-form-urlencoded (пробел как +).

Зачем кодировать URL

В адресе и в query-строке нельзя свободно ставить пробелы, кириллицу и служебные знаки. Percent-encoding заменяет их на последовательности вида %D0%BF, чтобы браузер и сервер прочитали исходный текст однозначно.

Ошибка в выборе режима даёт другой результат: если закодировать весь URL как один параметр, слэши и «?» тоже превратятся в проценты, и ссылка перестанет быть адресом.

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

Текст уходит на сервер?

Нет. Кодирование и декодирование выполняются в браузере, запрос на сервер не отправляется.

Когда нужен encodeURIComponent, а когда encodeURI?

encodeURIComponent кодирует весь текст, включая «?», «&» и «=», и подходит для одного параметра. encodeURI оставляет разделители адреса и кодирует только небезопасные символы в уже собранном URL.

Что делает режим формы?

application/x-www-form-urlencoded кодирует как encodeURIComponent, но пробел записывается знаком «+», как в HTML-формах.