Utilia

URL кодиране и декодиране

Безплатно URL кодиране и декодиране. Кодирайте параметри или цели адреси, декодирайте последователности %XX и третирайте + като интервал. Работи в браузъра.

Режим

Как да използвате URL кодирането и декодирането

  1. Изберете Кодирай, за да превърнете текст във вид, безопасен за URL, или Декодирай, за да превърнете процентно кодиран текст обратно в четими знаци.
  2. При кодиране изберете режим: Компонент за една стойност (например параметър на заявка или сегмент от път) или Цял URL, за да кодирате пълен адрес, като запазите структурата му.
  3. Когато декодирате данни от HTML форма или низ на заявка, включете Третирай + като интервал, така че знаците + да станат интервали.
  4. Поставете текста си и копирайте резултата. Ако процентна последователност е неправилна, инструментът съобщава грешка, вместо да гадае.

Какво е URL кодиране?

URL адресите могат да съдържат само ограничен набор ASCII знаци. Някои знаци, като /, ?, #, & и =, са запазени, защото разделят частите на адреса: пътя, низа на заявката и фрагмента. Други, като интервали, кавички, букви с диакритични знаци, кирилица или емотикони, просто не са позволени. URL кодирането, наричано още процентно кодиране, решава и двата проблема, като замества всеки проблемен байт с %, следван от две шестнадесетични цифри.

Текстът първо се превръща в UTF-8 байтове и всеки байт се кодира отделно. Интервалът става %20, амперсандът става %26, é (два байта в UTF-8) става %C3%A9, а емотиконът 😀 (четири байта) става %F0%9F%98%80. Буквите на кирилица заемат по два байта всяка, така че „я“ става %D1%8F. Незапазените знаци, т.е. латинските букви, цифрите и - _ . ~, никога не се нуждаят от кодиране.

Режим „Компонент“ или режим „Цял URL“

Изборът на правилния режим е най-важното решение, а грешката е класически източник на бъгове.

Режимът „Компонент“ работи като encodeURIComponent в JavaScript. Той кодира всеки запазен знак, така че резултатът да може безопасно да се постави в една част на URL. Използвайте го за стойности на параметри на заявка, сегменти от път или всичко, което потребител е въвел. Например търсенето rock & roll става rock%20%26%20roll. Ако не кодирате &, сървърът би прочел roll като начало на нов параметър.

Режимът „Цял URL“ работи като encodeURI. Той приема, че входът вече е пълен адрес, и запазва знаците, които му дават структура, като : / ? # & и =, докато кодира интервалите и знаците извън ASCII. Използвайте го, за да изчистите адрес като https://example.com/café menu?q=tea в https://example.com/caf%C3%A9%20menu?q=tea. Не го използвайте за отделни стойности: & в стойност би останал некодиран и би счупил низа на заявката.

Добро правило: съставяйте адресите от части, кодирайте всяка стойност в режим „Компонент“ и използвайте режима „Цял URL“ само за адреси, които получавате вече сглобени.

Знакът + и кодирането на форми

HTML формите, изпратени с application/x-www-form-urlencoded, кодират интервалите като + вместо %20. Затова адресите за търсене често изглеждат като ?q=hello+world. Стандартното процентно декодиране оставя + непроменен, защото в път плюсът е просто плюс. Когато декодирате низ на заявка или данни от форма, включете Третирай + като интервал, за да получите hello world. Оставете го изключено за пътища и за стойности, при които буквалният + има значение, като телефонни номера или данни в Base64. Истински знак плюс в данните от форма се изпраща като %2B, така че се декодира правилно и в двата случая.

Поверителност

Кодирането и декодирането се изпълняват изцяло във вашия браузър. Нищо от поставеното, включително адреси, които може да съдържат токени, идентификатори на сесии или лични данни, не се изпраща към сървър и не се съхранява.

Често задавани въпроси

Защо декодирането не успява с грешка за „неправилно“ кодиране?

След % трябва да следват точно две шестнадесетични цифри, а получените байтове трябва да образуват валиден UTF-8. Низове като 100%, %G1 или съкратена последователност като %E2%82 не могат да се декодират надеждно, затова инструментът съобщава проблема, вместо да даде неправилен текст. За да включите буквален знак за процент, кодирайте го като %25.

Каква е разликата между %20 и +?

И двете могат да представят интервал, но в различен контекст. %20 е валиден навсякъде в URL. + означава интервал само в низове на заявка, кодирани като форма; другаде е буквален знак плюс.

Трябва ли да кодирам цял URL в режим „Компонент“?

Само ако целият URL сам по себе си е стойност в друг URL, например параметър redirect=. В този случай режимът „Компонент“ е точно правилният: https://a.com/?x=1 става https%3A%2F%2Fa.com%2F%3Fx%3D1.

Защо текстът ми е кодиран два пъти?

Двойно кодиране става, когато вече кодиран текст се кодира отново и %20 се превръща в %2520. Декодирайте веднъж за проверка и се уверете, че всяка стойност се кодира само в момента, в който се вмъква в URL.

Скрива ли или защитава ли URL кодирането данни?

Не. Процентното кодиране е напълно обратимо и не дава никаква сигурност. Чувствителни стойности в URL могат да попаднат в историята на браузъра и в логовете на сървъра, така че изобщо избягвайте да поставяте тайни в URL.