tigtools

URL kodér / dekodér

Kódujte text pro použití v URL nebo převeďte escapované sekvence ve stylu %20 zpět na čitelný text. Vyberte možnost Komponenta pro jednu hodnotu nebo Celá URL pro celou adresu.

Běží ve vašem prohlížeči Bez registrace

Směr
Co kódujete?

Komponenta (encodeURIComponent) escapuje vše kromě písmen, číslic a znaků - _ . ! ~ * ' ( ). Použijte ji pro jednu hodnotu dotazu, pole formuláře nebo segment cesty.

Jak používat

  1. Vyberte možnost Kódovat nebo Dekódovat.
  2. Vyberte možnost Komponenta pro jednu hodnotu (např. jeden parametr dotazu) nebo Celá URL pro celou adresu.
  3. Napište nebo vložte text. Výsledek se okamžitě objeví vpravo (nebo dole na telefonech).
  4. 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.