URL Encoding
URL-кодирование (процентное кодирование)
Механизм кодирования специальных символов в URL путём замены их знаком процента с последующими шестнадцатеричными значениями байтов (например, пробел становится %20), обеспечивающий валидность и однозначность URL.
Техническая деталь
Процентное кодирование (RFC 3986) преобразует каждый байт UTF-8-представления символа в формат %HH. Незарезервированные символы (A-Z, a-z, 0-9, -, _, ., ~) никогда не кодируются. Зарезервированные символы (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) кодируются только когда не выполняют свою зарезервированную функцию. JavaScript предоставляет encodeURIComponent() (кодирует всё кроме незарезервированных) и encodeURI() (сохраняет структурные символы URL). Формат application/x-www-form-urlencoded, используемый при отправке форм, кодирует пробелы как + вместо %20.
Пример
```javascript
// URL encode/decode
encodeURIComponent('hello world & more');
// → 'hello%20world%20%26%20more'
decodeURIComponent('hello%20world');
// → 'hello world'
// Build query string
const params = new URLSearchParams({ q: 'pdf merge', page: '1' });
params.toString(); // 'q=pdf+merge&page=1'
```