Перейти до змісту
Calcify
ua

Кодування URL (encode / decode)

Кодує текст у відсоткове кодування і назад: кирилиця й пробіли стають «%D0%BA» і «%20». Три набори: частина адреси, повна адреса, поле форми.

Дані

Результат

Заповніть поля – результат з'явиться тут.

Реклама

Що таке відсоткове кодування

Навіщо воно

Адреса може складатися лише з невеликого набору знаків ASCII. Усе інше — кирилиця, пробіл, лапки, емодзі — передається як послідовність «%» і двох шістнадцяткових цифр на кожен байт. Тому ламінат в адресі виглядає як %D0%BB%D0%B0%D0%BC%D1%96%D0%BD%D0%B0%D1%82: вісім літер, по два байти на кожну.

Три набори, а не один

Частина адреси екранує все, крім літер, цифр і -._~. Це набір для одного значення: коли параметр містить /, & чи ?, вони мають стати екрануванням, інакше розірвуть адресу, у яку їх вставляють.

Повна адреса лишає на місці знаки, що тримають посилання вкупі: :, /, ?, #, &, =. Ним лагодять готове посилання, у якому є пробіли або кирилиця. Значення всередині нього ним кодувати не можна — воно лишить роздільники недоторканими.

Поле форми — це правило, за яким браузер надсилає форму: пробіл стає +. Поза рядком запиту + означає звичайний плюс, тому цей набір і винесено в окремий пункт, а не вгадується з тексту.

Зворотний напрям

Розкодування читає кожну послідовність %XX як байт і збирає з байтів текст. Якщо в рядку є %, за яким немає двох шістнадцяткових знаків, розкодовувати нема чого — це просто текст із відсотком, і сторінка каже про це прямо, а не викидає знак мовчки.

Часті питання про кодування URL

Чому та сама літера дає два екранування?

Бо в UTF-8 кириличну літеру записано двома байтами, а екранування описує один байт. к — це %D0%BA. Латинська літера займає один байт і взагалі не потребує екранування.

Пробіл — це %20 чи +?

%20 в адресі, + у полі форми. Обидва читаються як пробіл там, де вони доречні, але + у шляху лишиться плюсом.

Чи можна вставити кирилицю прямо в адресу?

Браузер покаже її читабельно, а надішле все одно закодованою. Проблема починається, коли посилання копіюють: у листі чи повідомленні воно розгортається у довгий рядок із відсотків.

Я розкодував, а вийшли кракозябри

Текст кодували не в UTF-8 — найчастіше в windows-1251. Сторінка не вгадує кодування: вона каже, що байти не читаються як UTF-8, і зупиняється.

Скільки разів можна кодувати?

Скільки завгодно, і кожен раз % стає %25. Подвійне кодування — звичайна причина, чому посилання не відкривається: розкодуйте двічі й побачите, що всередині.