Кодування

URL Encode/Decode

Кодування та декодування URL — символи, які потрібно екранувати в посиланнях і параметрах запиту.

URL-кодування (percent-encoding) замінює символи, недопустимі в URL — пробіли, кирилицю, спецсимволи — на послідовності виду %XX, де XX — шістнадцятковий код байта. Це потрібно, щоб посилання й параметри запиту передавались без спотворень.

Як користуватися

Типові сценарії

Що варто памʼятати

Кодувати потрібно значення параметрів, а не весь URL цілком — інакше буде закодовано й потрібні роздільники (:, /, ?, &).

JavaScript-функції encodeURIComponent і encodeURI кодують різні набори символів — перша призначена саме для значень параметрів.

Стаття про цей інструмент: URL Encode/Decode: percent-encoding у посиланнях

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

Чим URL-кодування відрізняється від Base64?

Це різні речі: URL-кодування (percent-encoding) замінює лише спецсимволи на послідовності виду %XX і залишає більшість тексту читабельним, а Base64 перетворює всі дані у власний алфавіт з 64 символів. Іноді Base64 додатково роблять "URL-safe", але це не робить його URL-кодуванням.

Чим відрізняються режими "Компонент" і "URI"?

encodeURIComponent (Компонент) екранує майже всі спецсимволи, включно з /, ?, & і #, тому підходить для значення окремого параметра запиту. encodeURI (URI) не чіпає символи, які мають структурне значення в адресі — /, ?, #, : та інші, — бо призначений для кодування цілого URL.

Чи безпечно вставляти конфіденційні дані в цей інструмент?

Так — кодування й декодування виконуються повністю у вашому браузері за допомогою JavaScript. Дані ніколи не надсилаються на сервер.

Що таке подвійне кодування і як його розпізнати?

Це помилка, коли вже закодований рядок кодують ще раз — символ % сам перетворюється на %25, і %20 стає %2520. Ознака проблеми — послідовності виду %25XX у декодованому результаті.

Чому пробіл іноді кодується як +, а іноді як %20?

+ для пробілу — це формат application/x-www-form-urlencoded, який використовують форми та query-рядки. %20 — це стандартний percent-encoding з RFC 3986, коректний у будь-якій частині URL.

Статті: Кодування

Base64: навіщо потрібне кодування і як воно працює

Як Base64 перетворює бінарні дані на текст ASCII і де це реально потрібно.

Base32: чим відрізняється від Base64 і коли зручніший

Регістронезалежний алфавіт Base32 і сценарії, де він зручніший за Base64.

HTML Entities: як безпечно виводити спецсимволи на сторінці

Чому символи < > & потрібно екранувати і як це запобігає поламаній розмітці.

JWT: структура токена та що означає "декодувати" JWT

Header, payload і signature JWT-токена та чому декодування — це не те саме, що перевірка підпису.

Unicode Escape: що означають послідовності \uXXXX

Звідки в JSON і JS-рядках беруться послідовності виду \u0041 і що вони означають.

ROT13 і шифр Цезаря: проста заміна символів

Чому зсув на 13 літер робить ROT13 симетричним і навіщо його взагалі використовують сьогодні.

Punycode: як домени з кирилицею працюють у DNS

Як домен на кшталт «приклад.укр» перетворюється на ASCII-запис із префіксом xn--.

Азбука Морзе: як текст перетворюється на крапки й тире

Принцип кодування літер крапками й тире та де азбука Морзе застосовується зараз.

Data URI: коли вбудовувати зображення прямо в код

Як data:-URI вбудовує вміст файлу прямо в HTML чи CSS і коли це виправдано.

Gzip + Base64: стиснення даних для передачі текстом

Навіщо стиснені бінарні дані ще й кодують у Base64 перед тим, як покласти в текстове поле.

XML Entities: екранування символів у XML-документах

П’ять обов’язкових XML-entity, без яких документ ламається при парсингу.