Перейти до змісту
Корисні інструменти

URL-кодування (percent-encoding): що це і як декодувати

АвторРедакція 9-07-2026, 00:09 207
URL-кодування (percent-encoding): що це і як декодувати
Реклама
Коротко
  • URL-кодування (percent-encoding) замінює «небезпечні» символи на комбінацію з знака % і двох шістнадцяткових цифр, наприклад, пробіл перетворюється на %20.
  • Кодувати потрібно пробіли, кирилицю, спецсимволи (?, &, #, =, /) і все, що може порушити структуру адреси.
  • Кирилиця кодується за кодуванням UTF-8: одна російська буква займає 2 байти і перетворюється на 6 символів виду %D0%9F.
  • Декодування — зворотний процес: %20 знову стає пробілом, а %D0%9F — буквою «П».

Ви напевно бачили адреси, де замість звичних букв миготять загадкові «%D0%BF%D1%80%D0%B8» і знаки відсотка. Це не помилка і не поломка — так працює URL-кодування, механізм, який дозволяє передавати в веб-адресах пробіли, російські букви і спеціальні символи без ризику «зламати» посилання. У цій статті простими словами розберемо, що таке percent-encoding, навіщо воно потрібно, які символи обов'язково кодувати і як виконати зворотне перетворення — декодування.

URL-кодувальник
Кодуйте та декодуйте URL онлайн — безкоштовно
Відкрити інструмент →

Що таке URL-кодування

URL-кодування, також відоме як percent-encoding («процентне кодування»), — це спосіб представити будь-який символ в адресі сторінки за допомогою безпечного набору знаків. Стандарт адресів (RFC 3986) дозволяє використовувати в URL лише обмежений алфавіт: латинські літери A–Z та a–z, цифри 0–9 та кілька знаків (- _ . ~). Усе інше — пробіли, кирилиця, лапки, дужки — вважається «небезпечним» і повинно бути закодовано.

Це працює так: програма бере байт символу, переводить його в шістнадцяткове число і підставляє перед ним знак відсотка. Пробіл має код 32, в шістнадцятковій системі це 20, тому в адресі пробіл виглядає як %20. Саме через знак відсотка метод і отримав свою назву.

Навіщо кодувати URL

Головна причина — надійність передачі даних. Адреса має сувору структуру, де певні символи виконують роль роздільників: питання відокремлює параметри, амперсанд розділяє пари «ключ=значення», решітка вказує на якорь. Якщо користувач введе в пошуковий рядок сайту слово з амперсандом або пробілом, а ви вставите його в посилання «як є», браузер або сервер зрозуміють адресу неправильно.

Ось типові ситуації, коли кодування обов'язкове:

  • Пробіли. В адресі їх бути не повинно — вони перетворюються в %20 (або, в параметрах форми, в знак +).
  • Кирилиця та інші національні алфавіти. Російські літери не входять до базового набору ASCII, тому кодуються побайтово.
  • Спеціальні символи-роздільники. Якщо ? & = # / є частиною самих даних, а не структури адреси, їх потрібно закодувати, інакше сенс посилання спотвориться.
  • Знаки препинання та символи. Кавички, дужки, відсотки, плюси — все це також кодується, щоб адреса залишалася однозначною.

Які символи кодуються

Простіше запам'ятати навпаки: не кодуються тільки «безпечні» символи. Це латиниця, цифри та знаки - _ . ~ (їх називають unreserved). Все інше або є службовим (reserved), або небезпечним і підлягає кодуванню, якщо використовується як звичайні дані. Нижче — таблиця частих прикладів.

СимволКодПояснення
пробіл%20в параметрах форми може бути +
!%21знак оклику
#%23решітка (якір)
%%25сам знак процента
&%26амперсанд (роздільник параметрів)
+%2Bплюс
/%2Fслеш
=%3Dдорівнює
?%3Fзнак питання
П%D0%9Fкирилиця, 2 байта UTF-8

Як кодується кирилиця

З російськими літерами пов'язана найчастіша плутанина. На відміну від латиниці, де одна літера — один байт, кирилиця в кодуванні UTF-8 займає по два байти на символ. Тому одна літера перетворюється на шість знаків: два байти, кожен у вигляді %XX. Наприклад, слово «привіт» кодується як %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.

Важливо, щоб і кодування, і декодування виконувались в одному кодуванні — сьогодні це майже завжди UTF-8. Якщо сайт використовує інше кодування (наприклад, застаріле Windows-1251), ті ж літери дадуть зовсім інші послідовності, і при неправильному декодуванні замість тексту ви побачите «кракозябри». Тому сучасний веб стандартизований на UTF-8.

Як декодувати URL

Декодування — це зворотна операція. Алгоритм шукає в рядку кожну конструкцію виду %XX, переводить шістнадцяткове число назад у байт і відновлює вихідний символ. Так %20 знову стає пробілом, а пара %D0%9F збирається в літеру «П». Робити це вручну за таблицею довго, тому зазвичай використовують готові інструменти.

Способи декодувати (і закодувати) адресу:

  • Онлайн-інструменти — вставляєте рядок, отримуєте результат в один клік, нічого встановлювати не потрібно.
  • JavaScript — функції encodeURIComponent() та decodeURIComponent() кодують і декодують окремі значення; encodeURI() та decodeURI() працюють з адресою цілком.
  • PHP — функції urlencode()/urldecode() для параметрів форм та rawurlencode()/rawurldecode() для строгого percent-encoding.
  • Python — модуль urllib.parse з методами quote() та unquote().

Практична порада: кодуйте тільки окремі значення параметрів, а не готову адресу цілком. Інакше службові роздільники на кшталт ? та & також закодуються, і посилання перестане працювати. Для окремого значення в JavaScript підходить encodeURIComponent(), а для збору всієї адреси — encodeURI().

Часті питання

Що означає %20 у посиланні?
Це закодований пробіл. Код пробілу — 32, в шістнадцятковій системі це 20, тому в адресі він записується як %20. У параметрах веб-форм пробіл іноді замінюється знаком «плюс» (+).

Чому російські букви в URL виглядають як %D0%BF?
Кирилиця кодується за стандартом UTF-8, де кожна буква займає два байти. Кожен байт записується як знак процента і дві шістнадцяткові цифри, тому одна російська буква перетворюється на шість символів виду %D0%BF.

Чи потрібно кодувати всю адресу чи тільки її частину?
Кодують тільки значення — наприклад, текст пошукового запиту або ім'я файлу. Службові символи, що відокремлюють частини адреси (?, &, /, =), повинні залишатися незакодованими, інакше браузер не зрозуміє структуру посилання.

Чим відрізняється кодування від декодування?
Кодування перетворює звичайні символи в безпечний запис виду %XX, а декодування виконує зворотне перетворення — відновлює з %XX початкові пробіли, літери та знаки. Це дві сторони одного механізму percent-encoding.

URL-кодувальник
Кодуйте та декодуйте URL онлайн — безкоштовно
Відкрити інструмент →

Оновлено: 9 липня 2026 р. Редакція MegaInet.art.

Наскільки матеріал корисний?Оцінка допомагає нам вибирати теми
00 оцінок
Аналітика

Статистика матеріалу

207переглядів
0коментарів
5хв читання
11 / 20місце серед матеріалів розділу

Обговорення

Поки ніхто не висловився — будьте першим.

Коментарі пишуть учасники Увійдіть на сайт — це безкоштовно і займає хвилину. Коментарі проходять модерацію.
Увійти
Реклама

На які запити відповідає ця сторінка