Utilia

Kódovanie a dekódovanie URL

Bezplatné kódovanie a dekódovanie URL. Percentovo kóduj parametre dopytu alebo celé adresy, dekóduj sekvencie %XX a spracuj + ako medzeru. Beží v prehliadači.

Režim

Ako používať kódovanie a dekódovanie URL

  1. Vyber Kódovať, ak chceš zmeniť text na tvar bezpečný pre URL, alebo Dekódovať, ak chceš percentovo kódovaný text vrátiť na čitateľné znaky.
  2. Pri kódovaní vyber režim: Súčasť pre jednu hodnotu (napríklad parameter dopytu alebo segment cesty), alebo Celá URL, ak chceš zakódovať úplnú adresu a zachovať jej štruktúru.
  3. Pri dekódovaní údajov z formulára HTML alebo reťazca dopytu zapni Brať + ako medzeru, aby sa znaky + zmenili na medzery.
  4. Vlož text a skopíruj výsledok. Ak je percentová sekvencia chybná, nástroj ohlási chybu, namiesto toho aby hádal.

Funguje v tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.

Čo je kódovanie URL?

Adresy URL môžu obsahovať len obmedzenú množinu znakov ASCII. Niektoré znaky, ako /, ?, #, & a =, sú vyhradené, pretože oddeľujú časti adresy: cestu, reťazec dopytu a fragment. Iné, ako medzery, úvodzovky, písmená s diakritikou alebo emoji, sa jednoducho nepovoľujú. Kódovanie URL, nazývané aj percentové kódovanie, rieši oba problémy tak, že každý problematický bajt nahradí znakom % a dvoma hexadecimálnymi číslicami.

Text sa najprv prevedie na bajty UTF-8 a každý bajt sa zakóduje samostatne. Medzera sa zmení na %20, ampersand na %26, é (dva bajty v UTF-8) na %C3%A9 a emoji 😀 (štyri bajty) na %F0%9F%98%80. Nevyhradené znaky, teda písmená, číslice a - _ . ~, sa kódovať nemusia nikdy.

Režim Súčasť alebo Celá URL

Správny výber režimu je najdôležitejšie rozhodnutie a jeho chybná voľba je klasickým zdrojom chýb.

Režim Súčasť funguje ako encodeURIComponent v JavaScripte. Kóduje každý vyhradený znak, takže výsledok sa dá bezpečne vložiť do jednej časti adresy URL. Použi ho pre hodnoty parametrov dopytu, segmenty cesty alebo čokoľvek, čo napísal používateľ. Napríklad hľadaný výraz rock & roll sa zmení na rock%20%26%20roll. Keby si & nezakódoval, server by roll prečítal ako začiatok nového parametra.

Režim Celá URL funguje ako encodeURI. Predpokladá, že vstup je už úplná adresa, a zachováva znaky, ktoré jej dávajú štruktúru, ako : / ? # & a =, pričom kóduje medzery a znaky mimo ASCII. Použi ho na úpravu adresy, ako https://example.com/café menu?q=tea, na https://example.com/caf%C3%A9%20menu?q=tea. Nepoužívaj ho pre jednotlivé hodnoty: & vnútri hodnoty by zostal nezakódovaný a pokazil by reťazec dopytu.

Dobré pravidlo: adresy URL skladaj z častí, každú hodnotu kóduj v režime Súčasť a režim Celá URL používaj len pre adresy, ktoré dostaneš už zložené.

Znak + a kódovanie formulárov

Formuláre HTML odoslané ako application/x-www-form-urlencoded kódujú medzery ako + namiesto %20. Preto adresy vyhľadávania často vyzerajú ako ?q=hello+world. Štandardné percentové dekódovanie nechá + nezmenené, pretože v ceste je plus len plus. Pri dekódovaní reťazca dopytu alebo údajov formulára zapni Brať + ako medzeru a dostaneš hello world. Pri cestách a hodnotách, kde záleží na doslovnom +, ako sú telefónne čísla alebo údaje Base64, ho nechaj vypnuté. Skutočné znamienko plus sa v údajoch formulára posiela ako %2B, takže sa správne dekóduje v oboch prípadoch.

Súkromie

Kódovanie a dekódovanie prebieha výhradne v tvojom prehliadači. Nič, čo vložíš, vrátane adries URL, ktoré môžu obsahovať tokeny, identifikátory relácie alebo osobné údaje, sa neodosiela na server ani neukladá.

Často kladené otázky

Prečo dekódovanie zlyhá s chybou „chybné“?

Za % musia nasledovať presne dve hexadecimálne číslice a výsledné bajty musia tvoriť platné UTF-8. Reťazce ako 100%, %G1 alebo useknutá sekvencia ako %E2%82 sa nedajú spoľahlivo dekódovať, preto nástroj ohlási problém namiesto nesprávneho textu. Ak chceš zahrnúť doslovné znamienko percenta, zakóduj ho ako %25.

Aký je rozdiel medzi %20 a +?

Oba môžu predstavovať medzeru, ale v rôznych kontextoch. %20 je platné všade v URL. + znamená medzeru len v reťazcoch dopytu kódovaných ako formulár; inde je to doslovné znamienko plus.

Mám celú URL kódovať v režime Súčasť?

Len ak je celá URL sama hodnotou v inej adrese, napríklad v parametri redirect=. V takom prípade je režim Súčasť presne správny: https://a.com/?x=1 sa zmení na https%3A%2F%2Fa.com%2F%3Fx%3D1.

Prečo je môj text zakódovaný dvakrát?

Dvojité kódovanie nastáva, keď sa už zakódovaný text zakóduje znova, takže %20 sa zmení na %2520. Dekóduj raz, aby si to skontroloval, a dbaj na to, aby sa každá hodnota kódovala až v okamihu vloženia do URL.

Skrýva alebo chráni kódovanie URL údaje?

Nie. Percentové kódovanie je úplne vratné a nedáva žiadnu bezpečnosť. Citlivé hodnoty v adresách URL môžu skončiť v histórii prehliadača a protokoloch servera, preto tajomstvá do adries URL radšej nevkladaj vôbec.