Jak nástroj použít
- 1Zvolte Zakódovat nebo Dekódovat a pak napište nebo vložte text – výsledek se aktualizuje průběžně při psaní.
- 2Při kódování zvolte správný druh: Komponenta pro jednu hodnotu, třeba hledaný výraz, Celá URL pro kompletní adresu, nebo Data formuláře, pokud se mají mezery zapsat jako
+. - 3Při dekódování parametrů dotazu nebo dat formuláře zapněte „Brát + jako mezeru“. Pokud text obsahuje poškozenou escape sekvenci, nástroj přesně označí, kde je.
- 4Chcete-li prozkoumat odkaz, vložte ho do pole „Rozbor URL“ – uvidíte jeho host, port, cestu, fragment a všechny parametry dotazu v dekódované podobě.
Co je kódování URL?
URL smí obsahovat jen omezenou sadu znaků ASCII. Vše ostatní – mezery, písmena s diakritikou, emoji a znaky se zvláštním významem, jako &, =, ? nebo # – se musí zakódovat procentovým kódováním: každý bajt znaku v UTF-8 se zapíše jako % a dvě šestnáctkové číslice. Z mezery se stane %20, z é %C3%A9 a z € %E2%82%AC.
Kódování zabrání tomu, aby se data spletla se strukturou URL. Pokud hledaný výraz obsahuje & a necháte ho tak, server výraz rozdělí na dva parametry; zapsaný jako %26 zůstane součástí hodnoty.
Komponenta, celá URL, nebo data formuláře?
Kódování komponenty – funkce encodeURIComponent v JavaScriptu – zakóduje vše kromě písmen, číslic a - _ . ! ~ * ' ( ). Použijte ho pro každý kousek, který vkládáte do URL: hodnotu parametru, část cesty nebo cíl přesměrování.
Kódování celé URL – encodeURI – ponechá znaky, které tvoří strukturu URL, jako : / ? # & =, beze změny a zakóduje jen mezery, znaky mimo ASCII a nebezpečné symboly. Použijte ho pro celou, už správně sestavenou URL, nikdy pro jednotlivé hodnoty.
Kódování formulářů (application/x-www-form-urlencoded) posílají prohlížeče při odeslání formuláře HTML a vytváří ho i URLSearchParams. Funguje jako kódování komponenty, jen se mezery mění na +. Proto + ve většině parametrů dotazu znamená mezeru – a proto se skutečné plus musí zapsat jako %2B.
Proč může dekódování selhat
Za % musí vždy následovat dvě šestnáctkové číslice. Text jako 100% jistota není platné procentové kódování: samotný znak procenta měl být zapsán jako %25.
Bajty za escape sekvencemi musí navíc tvořit platné UTF-8. ko%E8ka je způsob, jakým starší systémy kódovaly „kočka“ ve Windows-1250 nebo ISO-8859-2 – v UTF-8 je č %C4%8D. Dekodér označí přesnou sekvenci, která selhala, takže poznáte, zda byl text useknut, nebo zakódován v jiné znakové sadě.
Otázky a odpovědi
Co znamená %20 v URL?
%20 je zakódovaná mezera. Mezery v URL nejsou povolené, proto se zapisují jako %20 – nebo v parametrech dotazu a datech formulářů jako +. Obojí se dekóduje na obyčejnou mezeru.
Kódovat mezery jako %20, nebo jako +?
V cestě vždy používejte %20. V parametrech dotazu v praxi funguje obojí, protože servery dekódují data formulářů s + jako mezerou. %20 je bezpečné všude, kdežto + znamená mezeru jen v parametrech dotazu a v těle formulářů.
Jaký je rozdíl mezi encodeURI a encodeURIComponent?
encodeURIComponent zakóduje i vyhrazené znaky jako / ? & = #, takže se hodí pro jednotlivé hodnoty. encodeURI je nechá být, aby celá URL dál fungovala. Použít encodeURI na hodnotu parametru je častá chyba: & uvnitř hodnoty ji pak rozdělí na dva parametry.
Proč se mi zobrazuje chyba „URI malformed“?
Funkce decodeURIComponent v JavaScriptu ji vyhodí, když za % nenásledují dvě šestnáctkové číslice nebo když zakódované bajty nejsou platné UTF-8. Vložte text do dekodéru výše a uvidíte, která sekvence chybu způsobuje a na jaké pozici.
Které znaky se v URL nemusí kódovat?
Písmena A–Z a a–z, číslice 0–9 a - . _ ~ se nikdy kódovat nemusí. Vyhrazené znaky jako : / ? # [ ] @ ! $ & ' ( ) * + , ; = jsou povolené tam, kde mají svůj zvláštní význam, ale pokud jsou součástí dat, musí se zakódovat.