raatools/

URL-кодувальник / декодувальник

Кодуйте або декодуйте URL та рядки запитів.

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

Кодування URL (також зване відсотковим кодуванням) — це механізм перетворення символів, які не допускаються в URL, у безпечний шістнадцятковий формат. Кожен небезпечний символ замінюється знаком відсотка, за яким йдуть дві шістнадцяткові цифри, що представляють його ASCII-код. Наприклад, пробіл стає %20, амперсанд — %26, а решітка — %23.

URL-адреси можуть містити лише обмежений набір символів, визначених у RFC 3986: літери (A–Z, a–z), цифри (0–9) та кілька спеціальних символів (- _ . ~ ! * ' ( )). Кожен інший символ — включаючи пробіли, не-ASCII літери та зарезервовані символи, як-от & = ? # — повинен бути відсотково закодованим перед включенням до URL.

Коли потрібно кодувати URL?

  • Передача спеціальних символів у параметрах рядка запиту (наприклад, ?q=hello%20world).
  • Кодування даних форм, надісланих через HTTP POST з типом вмісту application/x-www-form-urlencoded.
  • Програмна побудова URL-адрес запитів API з введеними користувачем даними.
  • Вбудовування URL-адрес в інші URL-адреси (наприклад, параметри перенаправлення).
  • Включення символів Unicode (символи з діакритичними знаками, емодзі, символи CJK) в URL-адреси.

Кодування та декодування

Кодування перетворює простий текст у URL-безпечний рядок шляхом заміни небезпечних символів відсотково закодованими еквівалентами. Декодування є зворотним процесом — перетворює відсотково закодовані послідовності назад у вихідні символи. Цей інструмент дозволяє перемикатися між напрямками кодування та декодування одним клацанням.

Як користуватися цим інструментом

Вставте або введіть текст у поле введення. Виберіть режим кодування або декодування. Вивід оновлюється миттєво. Натисніть кнопку заміни, щоб змінити напрямок, використовуючи поточний вивід як новий ввід. Це зручно, коли потрібно закодувати рядок, а потім перевірити результат, декодувавши його назад.

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

Цей інструмент використовує функцію JavaScript encodeURIComponent(), яка кодує всі символи, крім: A–Z, a–z, 0–9 та незарезервованих символів - _ . ! ~ * ' ( ). Це правильне кодування для значень параметрів запиту та даних форм. Подібна функція encodeURI() менш агресивна і зберігає символи, такі як : / ? #, що мають значення у структурі URL.

Поширені помилки кодування URL

Найпоширенішою помилкою є подвійне кодування — кодування рядка, який вже закодований, перетворення %20 на %2520. Це руйнує URL-адреси та збиває серверів з пантелику. Завжди перевіряйте, чи вхідні дані вже закодовані, перш ніж застосовувати кодування. Ще одна помилка — використання encodeURI() замість encodeURIComponent(), що залишає & та = незакодованими у значеннях параметрів.

Відсутність кодування введених користувачем даних перед вставкою в URL-адреси є вразливістю безпеки. Незакодовані введені дані можуть впроваджувати додаткові параметри запиту, порушувати розбір URL або вмикати атаки ін'єкції. Завжди кодуйте надані користувачем значення при програмній побудові URL-адрес.

Практичні поради

У веброзробці більшість фреймворків автоматично обробляють кодування URL при відправленні форм і бібліотеках HTTP-клієнтів. Ручне кодування зазвичай потрібне при динамічній побудові URL-адрес у JavaScript, при передачі даних у фрагментах URL або при налагодженні викликів API, що містять спеціальні символи.

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

У чому різниця між %20 і + для пробілів?

Обидва представляють пробіли, але в різних контекстах. %20 є стандартним кодуванням URL для пробілів і працює скрізь. Знак + представляє пробіли лише у рядках запиту, що використовують формат application/x-www-form-urlencoded (відправлення форм HTML). Якщо є сумніви, використовуйте %20.

Чи потрібно кодувати символи UTF-8?

Так. Не-ASCII символи (літери з діакритичними знаками, емодзі, китайські символи тощо) повинні бути закодовані в UTF-8, а потім відсотково закодовані для включення в URL-адреси. JavaScript encodeURIComponent() автоматично виконує обидва кроки, перетворюючи такі символи, як «é», на %C3%A9.