Що таке Percent-Encoding і чому воно необхідне?
Percent-encoding є основоположним стовпом сучасної веб-інфраструктури, який визначає порядок птередачі даних через інтернет. У стеоїй основі інтернет покладається на уніфіковані ідентифікатори ресурсів (URI) для пошуку ресурсів. Однак специфікація URI (RFC 3986) суворо обмежує символи, які можна безпечно використовувтети в URL-адресі. Дозволені символи, відомі як 'незарезервовані символи', отемежені великими та малими букветео-цифровими символами (A-Z, a-z, 0-9), дефісатеи (-), крапками (.), підкресленнями (_) та тильдами (~). Усі інші символте вважаються 'небезпечними' або 'зарезервованими', оскільки вони мають спеціальне структурне значення у форматі URL. Наприклад, амперсанд (&) використовується для розділення параметрів запиту, знак рівності (=) присвоює значення, а похила риска (/) визначає шляхи до каталогів. Якщо вам потрібно передати самий символ '&' як частину даних, а не як структурний роздільник, його необхідно закодувати за допомогою Percent-encoding.
Коли символ потребує відсоткового кодування, він спочатку перетворюється на відповідне байтове значення згідно зі стандартом кодування символів UTF-8. Потім кожен байт представляється двозначним шістнадцятковим числом, перед яким стоїть знак відсотка (%). Наприклад, символ пробілу відповідає байтовому значенню 32 у десятковій системі або 20 у шістнадцятковій. Тому пробіл перетворюється на '%20'. Символ 'at' (@) стає '%40', а кома (,) — '%2C'. Це систематичне перетворення гарантує, що веб-сервери, балансувальники навантаження та браузери можуть універсально інтерпретувати межі URL-адреси без будь-якої двозначності чи пошкодження даних. Без Percent-encoding передача складного рядка запиту, що містить довільне введення користувача, порушила б структуру URL-адреси, що призвело б до помилок 400 Bad Request, зламаних посилань або навіть серйозних уразливостей безпеки, таких як HTTP Parameter Pollution.
Історично різні системи обробляли URL-кодування по-різному, що іноді призводило до жахливих проблем із сумісністю. Наприклад, дані форми, надіслані через тип вмісту application/x-www-form-urlencoded, традиційно кодують пробіли як знак плюс (+), тоді як RFC 3986 суворо вимагає '%20'. Сучасні фреймворки та мови веб-розробки зазвичай абстрагують ці нюанси, але наявність надійного та на 100% безкоштовного інструменту для ручного Percent-encode рядків залишається абсолютною необхідністю для налагодження, тестування API та створення складних глибоких посилань. Розуміючи внутрішню механіку відсоткового кодування, розробники можуть переконатися, що їхні програми стійкі до різних вхідних символів, ефективно обробляючи все: від стандартного тексту ASCII до складних багатобайтових емодзі Unicode.

