CodeKitHub
Kódovací nástroje

Online kodér / dekodér URL

Naposledy aktualizováno:

Zakódujte text procenty (percent encoding) pro bezpečné použití v URL adresách, nebo dekódujte zakódovanou URL zpět do čitelné podoby. Vyberte režim pro komponentu (zakóduje vše, pro hodnoty parametrů dotazu) nebo režim pro celou URL (zachová strukturu :// ? &). Vše běží ve vašem prohlížeči.

Co je tento nástroj?

Kódování URL (percent encoding) nahrazuje znaky, které nejsou v URL povolené, znakem % následovaným jejich hodnotou bajtu v šestnáctkové soustavě — mezera se stane %20 a 你 se stane %E4%BD%A0. Bez toho by znaky jako mezery, &, ? a nelatinský text narušily strukturu URL nebo byly serverem chybně interpretovány.

Existují dvě běžné potřeby a tento nástroj podporuje obě: kódování hodnoty, která jde dovnitř parametru dotazu (režim komponenty — zakóduje i / ? & =), a kódování celé URL při zachování její struktury (režim celé URL — ponechá :// ? & beze změny).

Jedna historická zvláštnost, kterou stojí za to znát: podle standardu URL (RFC 3986) je správně mezera %20, ale odesílání HTML formulářů ji tradičně kóduje jako znaménko plus — proto se v praxi setkáte s q=hello%20world i q=hello+world, a proto je při dekódování dat z formuláře občas potřeba zpracovat + zvlášť.

Proč ho používat?

  • Bezpečně sestavte dotazovací řetězec — uživatelský vstup se znaky &, = nebo mezerami vaši URL nenaruší.
  • Dekódujte dlouhé zakódované URL z logů, analytiky nebo přesměrování a zjistěte, co skutečně říkají.
  • Správné zpracování UTF-8 pro čínštinu, emoji a další nelatinský text.
  • Dva režimy, takže omylem nezakódujete : a / celé URL adresy.
  • Zdarma, okamžitě, bez nahrávání.

Jak se používá

  1. Vložte svůj text nebo URL do vstupního pole.
  2. Vyberte režim: "Komponenta" pro hodnoty vkládané do parametrů dotazu, "Celá URL" pro celé adresy.
  3. Klikněte na "Zakódovat" nebo "Dekódovat".
  4. Zkopírujte výsledek.

Příklad

Vstup

https://example.com/search?q=hello world & 你好

Výstup

Režim komponenty: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Režim celé URL:  https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BD

Režim komponenty zakóduje i strukturální znaky; režim celé URL je zachová.

Časté případy použití

  • Sestavení sdílitelné URL, kde hledaný výraz nebo hodnota filtru pochází od uživatele a může obsahovat mezery, & nebo jiné speciální znaky.
  • Dekódování dlouhé sledovací nebo přesměrovací URL z e-mailu nebo reklamní kampaně, abyste před kliknutím viděli skutečný cíl a parametry.
  • Ladění toho, proč server nesprávně čte parametr dotazu — viníkem je často vyhrazený znak, který měl být zakódovaný, ale nebyl.
  • Příprava hodnoty v jiném jazyce než angličtina (čínština, japonština, arabština atd.) pro použití v dotazovacím řetězci URL.

encodeURIComponent vs. encodeURI v praxi

Ty přímo odpovídají dvěma režimům tohoto nástroje a odpovídají skutečným funkcím JavaScriptu, které vývojáři už znají: encodeURIComponent (režim komponenty) zakóduje vše kromě malé skupiny nevyhrazených znaků, takže je bezpečný pro jakoukoli jedinou hodnotu vkládanou do URL — používá se pro parametr dotazu, segment cesty nebo hodnotu hash fragmentu. encodeURI (režim celé URL) ponechá strukturální znaky URL (:, /, ?, #, &, =) beze změny, protože předpokládá, že kódujete celou, již strukturovanou URL, ne surovou hodnotu — jeho použití na jedinou hodnotu parametru by nezakódovalo znaky & nebo =, které tato hodnota může obsahovat, což je nejčastější chyba při výběru nesprávného režimu.

Vyhrazené vs. nevyhrazené znaky

Specifikace URL (RFC 3986) dělí znaky do dvou skupin: nevyhrazené znaky (písmena, číslice, - _ . ~) jsou vždy bezpečné a nikdy se nekódují, zatímco vyhrazené znaky (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) mají ve struktuře URL speciální význam a je potřeba je zakódovat pouze tehdy, když se objevují jako doslovná data, ne jako strukturální interpunkce. Přesně proto existují oba režimy — režim komponenty zachází s vyhrazenými znaky jako s daty, která je třeba chránit, režim celé URL s nimi zachází jako se strukturou, kterou je třeba zachovat. Pochopení tohoto rozdílu je užitečnější než memorování toho, kdy který režim použít, protože vysvětluje, proč se stejný znak (jako &) někdy kóduje a jindy ponechává beze změny podle toho, jakou roli v konkrétní URL hraje.

Časté dotazy

Kdy mám použít režim komponenty a kdy režim celé URL?

Režim komponenty (encodeURIComponent) při kódování jediné hodnoty, která jde dovnitř parametru dotazu — zakóduje /, ?, & a =, aby nemohly narušit URL. Režim celé URL (encodeURI) při kódování celé adresy URL — zachová strukturální znaky, aby URL stále fungovala.

Proč se místo mezery objevilo %20, a ne +?

Obojí je platné v různých kontextech. %20 je univerzální kódování procenty pro mezeru; + znamená mezeru pouze uvnitř dotazovacích řetězců používajících starší formát application/x-www-form-urlencoded. Tento nástroj používá %20, které funguje všude.

Proč dekódování selže s chybou?

Vstup obsahuje chybně tvořenou sekvenci procent, například % nenásledované dvěma šestnáctkovými číslicemi. To se často stává, když byla URL useknutá nebo dekódovaná dvakrát. Opravte nebo odstraňte poškozenou sekvenci %.

Co je dvojité kódování?

Kódování už zakódovaného textu: %20 se stane %2520, protože samotné % se zakóduje na %25. Jde o běžnou chybu — pokud váš dekódovaný výstup stále obsahuje kódy %, dekódujte ho ještě jednou.

Zvládá to čínské znaky a emoji?

Ano. Text se kóduje jako bajty UTF-8, takže 你好 se stane %E4%BD%A0%E5%A5%BD a bezchybně se dekóduje zpět — stejné chování, jaké používají prohlížeče.

Související nástroje