URL Enkodér / Dekodér

Zakódujte a dekódujte URL adresy online. Tři režimy kódování, detekce double-encodingu a rozklad URL na jednotlivé komponenty.

0 Zakódovaných sekvencí
0 Délka výstupu
0 Dekódovaných sekvencí
0 Délka výstupu

Jak URL enkodér použít

  1. Vyberte tab podle toho, co potřebujete: Enkódovat, Dekódovat nebo URL analýza.
  2. Zadejte nebo vložte text do vstupního pole. Výsledek se zobrazí okamžitě, bez nutnosti cokoliv potvrzovat.
  3. U kódování si můžete zvolit režim: encodeURIComponent pro parametry, encodeURI pro celé adresy, nebo si nastavit vlastní znaky.
  4. Zakódované sekvence se ve výstupu barevně zvýrazní, takže hned vidíte, co se změnilo.
  5. Klikněte na Kopírovat a výsledek máte ve schránce. Tlačítkem Prohodit přesunete výstup rovnou do druhého tabu.

Co je URL kódování a proč existuje

URL adresy mohou obsahovat jen omezenou sadu ASCII znaků. Písmena A-Z, číslice 0-9 a pár speciálních znaků (pomlčka, podtržítko, tečka, vlnka) projdou beze změny. Všechno ostatní, včetně mezer, české diakritiky nebo emoji, se musí převést do bezpečného formátu.

Tomuto převodu se říká percent-encoding a definuje ho standard RFC 3986. Princip je jednoduchý: každý bajt se zapíše jako znak procenta následovaný dvěma hexadecimálními číslicemi. Mezera se tak stane %20, české „č“ se rozloží na %C4%8D (dva bajty v UTF-8) a emoji srdíčko zabere rovnou dvanáct znaků.

Rozdíl mezi encodeURI a encodeURIComponent

JavaScript nabízí dvě funkce a vývojáři je často zaměňují. encodeURI je určená pro celé URL adresy. Ponechá znaky, které mají v URL strukturální význam: lomítka, dvojtečky, otazníky, hashmark. Hodí se, když chcete zakódovat kompletní odkaz a zachovat jeho strukturu.

encodeURIComponent kóduje agresivněji. Zakóduje i lomítka, ampersandy a rovnítka, protože předpokládá, že pracujete s hodnotou parametru uvnitř URL. Pokud skládáte query string ručně, tohle je ta správná volba. Použití encodeURI na hodnotu parametru je častá chyba, která vede k rozbitým odkazům.

Co je double-encoding a jak ho odhalit

Double-encoding vznikne, když se už zakódovaný text zakóduje podruhé. Znak procenta (%25) před každou sekvencí je typický příznak. Řekněme, že máte %20 (mezera). Po druhém zakódování z toho bude %2520, protože samotné procento se převede na %25. Server pak text dekóduje jen jednou a výsledek je nečitelný.

Náš nástroj tento problém detekuje automaticky. Pokud ve vstupu najde sekvence typu %25xx, zobrazí varování a nabídne možnost dekódovat text znovu. Tohle je reálný problém, se kterým se vývojáři setkávají při práci s API, přesměrováními nebo logováním URL adres. Organizace OWASP dokonce eviduje double-encoding jako bezpečnostní riziko, protože útočníci ho mohou zneužít k obcházení bezpečnostních filtrů.

Časté otázky

Proč se česká diakritika v URL kóduje na tolik znaků?

Česká písmena s háčky a čárkami zabírají v UTF-8 kódování dva bajty. Každý bajt se zapíše jako %XX, takže jedno české písmeno se rozloží na šest znaků. Například „ř“ se zakóduje jako %C5%99. Je to normální chování, které zajišťuje, že URL funguje správně ve všech prohlížečích.

Mám kódovat celou URL, nebo jen parametry?

Jen parametry. Pokud zakódujete celou URL funkcí encodeURIComponent, zničíte její strukturu, protože se zakódují i lomítka a dvojtečky. Pro celé adresy použijte režim encodeURI, pro hodnoty parametrů encodeURIComponent.

Je URL kódování to samé co Base64?

Ne. URL kódování převádí jednotlivé znaky na %XX sekvence a výsledek zůstává čitelný. Base64 enkodér převádí celý vstup do zcela jiné podoby pomocí 64 znaků abecedy. URL kódování se používá v adresách, Base64 pro přenos binárních dat v textovém formátu.

Posíláte moje data na server?

Ne. Veškeré kódování a dekódování probíhá přímo ve vašem prohlížeči pomocí nativních JavaScriptových funkcí. Žádná data se nikam neodesílají. Nástroj funguje i bez připojení k internetu po prvním načtení stránky.