Utilia

Kódování a dekódování URL

Bezplatné kódování a dekódování URL. Procentově zakóduj parametry dotazu či celé adresy, dekóduj sekvence %XX a zpracuj + jako mezeru. Běží v prohlížeči.

Režim

Jak používat kódování a dekódování URL

  1. Vyber Kódovat, aby se text převedl do podoby bezpečné pro URL, nebo Dekódovat, aby se procentově zakódovaný text vrátil na čitelné znaky.
  2. Při kódování vyber režim: Součást pro jednu hodnotu (například parametr dotazu nebo segment cesty), nebo Celé URL pro zakódování úplné adresy při zachování její struktury.
  3. Při dekódování dat z formuláře HTML nebo z řetězce dotazu zapni Brát + jako mezeru, aby se znaky + změnily na mezery.
  4. Vlož text a zkopíruj výsledek. Pokud je procentová sekvence chybná, nástroj ohlásí chybu, místo aby hádal.

Co je kódování URL?

URL smějí obsahovat jen omezenou sadu znaků ASCII. Některé znaky, například /, ?, #, & a =, jsou vyhrazené, protože oddělují části adresy: cestu, řetězec dotazu a fragment. Jiné, například mezery, uvozovky, písmena s diakritikou nebo emoji, nejsou povoleny vůbec. Kódování URL, nazývané také procentové kódování, řeší oba problémy tím, že každý problematický bajt nahradí znakem % následovaným dvěma šestnáctkovými číslicemi.

Text se nejdřív převede na bajty UTF-8 a každý bajt se kóduje zvlášť. Mezera se změní na %20, ampersand na %26, é (dva bajty v UTF-8) na %C3%A9 a emoji 😀 (čtyři bajty) na %F0%9F%98%80. Nevyhrazené znaky, tedy písmena, číslice a - _ . ~, se kódovat nikdy nemusí.

Režim Součást a režim Celé URL

Volba správného režimu je nejdůležitějším rozhodnutím a její chybné provedení je klasickým zdrojem chyb.

Režim Součást funguje jako encodeURIComponent v JavaScriptu. Kóduje každý vyhrazený znak, takže výsledek lze bezpečně vložit do jedné části URL. Používej ho pro hodnoty parametrů dotazu, segmenty cesty a cokoli, co napsal uživatel. Například hledaný výraz rock & roll se změní na rock%20%26%20roll. Kdyby se & nezakódoval, server by roll přečetl jako začátek nového parametru.

Režim Celé URL funguje jako encodeURI. Předpokládá, že vstup je už úplná adresa, a zachovává znaky, které jí dávají strukturu, například : / ? # & a =, zatímco mezery a znaky mimo ASCII kóduje. Použij ho k vyčištění adresy jako https://example.com/café menu?q=tea na https://example.com/caf%C3%A9%20menu?q=tea. Nepoužívej ho na jednotlivé hodnoty: & uvnitř hodnoty by zůstalo nezakódované a rozbilo by řetězec dotazu.

Dobré pravidlo: URL sestavuj z částí, každou hodnotu kóduj v režimu Součást a režim Celé URL používej jen u adres, které dostaneš už sestavené.

Znak + a kódování formulářů

Formuláře HTML odesílané jako application/x-www-form-urlencoded kódují mezery jako + místo %20. Proto adresy hledání často vypadají jako ?q=hello+world. Standardní procentové dekódování + nemění, protože v cestě je plus prostě plus. Když dekóduješ řetězec dotazu nebo data formuláře, zapni Brát + jako mezeru a dostaneš hello world. Pro cesty a hodnoty, kde záleží na doslovném +, například telefonní čísla nebo data v Base64, ho nech vypnuté. Skutečné znaménko plus se v datech formuláře posílá jako %2B, takže se v obou případech dekóduje správně.

Soukromí

Kódování a dekódování probíhá celé ve tvém prohlížeči. Nic, co vložíš, včetně adres URL, které mohou obsahovat tokeny, ID relací nebo osobní údaje, se neodesílá na server ani neukládá.

Časté dotazy

Proč dekódování selže s chybou „chybné“?

Za % musí následovat přesně dvě šestnáctkové číslice a výsledné bajty musí tvořit platné UTF-8. Řetězce jako 100%, %G1 nebo useknutá sekvence jako %E2%82 nelze spolehlivě dekódovat, takže nástroj ohlásí problém místo vytvoření nesprávného textu. Chceš-li zahrnout doslovné procento, zakóduj ho jako %25.

V čem se liší %20 a +?

Obojí může představovat mezeru, ale v různých kontextech. %20 je platné všude v URL. + znamená mezeru jen v řetězcích dotazu kódovaných jako formulář; jinde je to doslovné znaménko plus.

Mám zakódovat celé URL v režimu Součást?

Jen pokud je celé URL samo hodnotou uvnitř jiného URL, například parametrem redirect=. V takovém případě je režim Součást přesně správný: https://a.com/?x=1 se změní na https%3A%2F%2Fa.com%2F%3Fx%3D1.

Proč je můj text zakódovaný dvakrát?

Dvojité kódování nastane, když se už zakódovaný text zakóduje znovu a %20 se změní na %2520. Dekóduj jednou pro kontrolu a ujisti se, že se každá hodnota kóduje jen v okamžiku vložení do URL.

Skrývá nebo chrání kódování URL data?

Ne. Procentové kódování je plně vratné a žádnou bezpečnost neposkytuje. Citlivé hodnoty v URL mohou skončit v historii prohlížeče a v protokolech serveru, proto tajné údaje do URL raději vůbec nedávej.