Jak používat
- Vyberte možnost Kódovat nebo Dekódovat.
- Vyberte možnost Komponenta pro jednu hodnotu (např. jeden parametr dotazu) nebo Celá URL pro celou adresu.
- Napište nebo vložte text. Výsledek se okamžitě objeví vpravo (nebo dole na telefonech).
- Zkopírujte výsledek nebo použijte „Použít výstup jako vstup“ k obrácení operace a ověření zpětného převodu.
Jak to funguje
Adresy URL mohou obsahovat jen omezenou sadu znaků ASCII. Vše ostatní, včetně mezer, znaků s diakritikou a emoji, se zapisuje pomocí procentového kódování: znak se převede na bajty UTF-8 a z každého bajtu se stane znak % následovaný dvěma hexadecimálními číslicemi. Mezera se změní na %20, é na %C3%A9 a € na %E2%82%AC.
Režim Komponenta používá funkce encodeURIComponent a decodeURIComponent z JavaScriptu. Kóduje každý znak, který má v URL speciální význam, včetně / ? # & = + : a @, takže výsledek lze bezpečně umístit do hodnoty dotazu nebo do jednoho segmentu cesty. Beze změny ponechává pouze A–Z, a–z, 0–9 a - _ . ! ~ * ' ( ).
Režim Celá URL používá funkce encodeURI a decodeURI. Předpokládá, že vstupem je již kompletní adresa URL, a vyhrazené znaky ; , / ? : @ & = + $ # ponechává beze změny, takže adresa dál funguje. Při dekódování rovněž decodeURI ponechává kódování těchto vyhrazených znaků: %2F zůstane %2F, protože kdyby se změnilo na /, změnil by se význam URL.
Možnost Formulářová data odpovídá formátu application/x-www-form-urlencoded, který prohlížeče používají při odesílání formulářů HTML: mezera se zapisuje jako + místo %20. Při dekódování s touto možností se každé + změní na mezeru; skutečné znaménko plus je pak nutné zapsat jako %2B.
Neplatný vstup není nikdy zahozen. Pokud za % nenásledují dvě hexadecimální číslice, nebo pokud posloupnost kódovaných znaků netvoří platný UTF-8, nástroj ukáže, kde je problém, a ponechá váš text, abyste ho mohli opravit.
Příklady
Vložení hodnoty do řetězce dotazu
Pokud chcete hledat „Rock & Roll“ na adrese https://example.com/search?q=…, zakódujte v režimu Komponenta pouze hodnotu: Rock%20%26%20Roll. Bez zakódování by znak & ukončil parametr q a zahájil nový parametr s názvem „ Roll“.
Oprava URL s mezerami a diakritikou
V režimu Celá URL se https://example.com/menu/crème brûlée.html změní na https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html. Lomítka a dvojtečka zůstanou tak, jak jsou, takže odkaz stále funguje.
Čtení dat formuláře z logu
Serverový log ukazuje name=Jane+Doe&city=S%C3%A3o+Paulo. Dekódujte to v režimu Komponenta se zapnutou volbou „Považovat + za mezeru“, abyste získali name=Jane Doe&city=São Paulo.
Časté dotazy
Jaký je rozdíl mezi encodeURI a encodeURIComponent?
encodeURIComponent escapuje znaky, které oddělují části URL (/ ? # & = + : @ a další), takže je určen pro jednu část URL. encodeURI tyto znaky ponechává, takže je určen pro celou URL. Použití encodeURI na hodnotu dotazu je častá chyba: & nebo = uvnitř hodnoty by nebyly escapovány a rozbily by dotazovací řetězec.
Měla by mezera být %20 nebo +?
V cestě URL je mezera vždy %20. V dotazovacím řetězci se objevují obě: %20 je platné všude, zatímco + znamená mezeru pouze v datech kódovaných jako formulář (application/x-www-form-urlencoded), což je způsob, jakým HTML formuláře a mnoho serverových frameworků čtou dotazovací řetězce. Pokud si nejste jisti, použijte %20.
Proč dostanu při dekódování chybu?
Dekódování selže, když za znakem % nenásledují dvě hexadecimální číslice (např. „50% off“), nebo když escapované bajty nejsou platné UTF-8, což obvykle znamená, že text byl zakódován starší znakovou sadou, jako je Latin-1 (é jako %E9 místo %C3%A9). Chybová zpráva ukazuje pozici problému.
Proč se %2F nezměnilo na lomítko v režimu Celá URL?
decodeURI záměrně ponechává escapované vyhrazené znaky, jako jsou / ? # & a =, protože jejich dekódování by mohlo změnit, jak je URL rozdělena na části. Použijte režim Komponenta k dekódování všech escapovaných znaků.
Které znaky se nikdy nekódují?
Oba režimy ponechávají A–Z, a–z, 0–9 a znaky - _ . ! ~ * ' ( ) beze změny. Režim Celá URL navíc ponechává ; , / ? : @ & = + $ a # beze změny.
Soukromí
Kódování a dekódování probíhá výhradně ve vašem prohlížeči pomocí vestavěných funkcí JavaScriptu. Vaše texty a URL se nenahrávají, neukládají ani nezahrnují do analytiky.