URL encoder a decoder
Pre jednu hodnotu dotazu alebo časť cesty. Zakóduje všetko okrem písmen, číslic a - _ . ! ~ * ' ( ), rovnako ako encodeURIComponent.
Vložte URL vyššie. Jej časti a parametre sa zobrazia tu, pripravené na úpravu.
Parametre dotazu
Táto URL nemá žiadne parametre dotazu.
Parametre fragmentu
Všetko beží vo vašom prehliadači a nič, čo vložíte, sa nenahráva. Na tom záleží, pretože URL často obsahujú tokeny a ID relácií.
URL encode a decode textu online počas písania: nástroj mení medzery, znaky s diakritikou a symboly ako & či ? na sekvencie zakódované percentami, napríklad %20, a vracia ich späť na čitateľný text. Druhá záložka je parser URL. Rozdelí ľubovoľnú adresu na protokol, hostiteľa, cestu a parametre dotazu, ktoré môžete upraviť, vypnúť alebo zbaviť sledovacích značiek, a správne zakódovanú URL vám zapíše späť. Všetko sa deje vo vašom prehliadači.
Ako urobiť URL encode a decode textu
- Napíšte alebo vložte text do poľa na záložke Kódovanie / dekódovanie. Výsledok sa aktualizuje po každom stlačení klávesu.
- Vyberte Smer. Zakódovať upraví text tak, aby bol v URL bezpečný, Dekódovať premení
caf%C3%A9%20au%20laitspäť nacafé au lait. Ak do prázdneho poľa vložíte text so sekvenciami ako%20, nástroj sám prepne na Dekódovať (Radšej zakódovať prepne späť). Obyčajný text vložený v režime Dekódovať nástroj rovnako prepne na Zakódovať a tlačidlom Radšej dekódovať sa vrátite späť. - Pri zakódovaní si pod Zakódovať ako vyberte, čo ten text je (pozrite nasledujúcu časť). Predvolená možnosť Hodnota parametra je správna pre jednu hodnotu dotazu.
- Kopírovať vloží výsledok do schránky. Prehodiť presunie výsledok do vstupu a obráti smer. Je to rýchla kontrola v oboch smeroch: dekódovaním práve zakódovaného textu musíte dostať pôvodný text.
Každý znak, ktorý nástroj zmenil, je vo výsledku zvýraznený. Keď naň prejdete kurzorom, uvidíte znak, jeho kódový bod Unicode a jeho bajty, napríklad é U+00E9 %C3%A9. Pod poľami vidíte počet Znakov, Bajtov UTF-8 a Zakódovaných znakov (alebo Dekódovaných znakov). Vyskúšať ukážku načíta vetu Cena: 50 % zľava, čaj & koláč v ponuke? Áno!, ktorá má 44 znakov, ale 49 bajtov UTF-8, pretože každé písmeno s diakritikou zaberá dva bajty.
Pri zakódovaní voľba Každý riadok zvlášť zakóduje každý riadok samostatne a zachová zalomenia riadkov, čo sa hodí na zoznam hodnôt alebo odkazov. Bez tejto voľby sa zakóduje aj zalomenie riadka a zmení sa na %0A. Keď je text URL s parametrami, nástroj ponúkne Rozdeliť na časti, čo otvorí adresu v záložke parsera.
Zakódovanie parametra URL, celej URL alebo údajov formulára
Nie každý znak treba kódovať všade. Lomka oddeľuje priečinky v ceste, ale vo vnútri hodnoty parametra je obyčajným údajom, takže správny výsledok závisí od toho, čo kódujete. Zakódovať ako ponúka štyri režimy:
- Hodnota parametra funguje ako
encodeURIComponentv JavaScripte a hodí sa pre jednu hodnotu dotazu alebo časť cesty. Zakóduje všetko okrem písmen, číslic a- _ . ! ~ * ' ( ), takže&,=,/alebo?vo vnútri hodnoty nemôže URL rozbiť. Zakódovanímcafé & crèmevzniknecaf%C3%A9%20%26%20cr%C3%A8me, pripravené na vloženie zaq=. - Celá URL je pre úplnú adresu, ktorú treba len upratať. Zakóduje medzery, znaky mimo ASCII, riadiace znaky, spätný apostrof a
" < > \ ^ { | }a zachová všetko, čo dáva URL štruktúru:: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Takžehttps://example.com/search?q=café au lait&lang=frsa zmení nahttps://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Už zakódované sekvencie ostanú tak, ako sú, a osamelé%sa zmení na%25. Tu sa líši odencodeURIv JavaScripte, ktoré existujúce%20zmení na%2520a kóduje hranaté zátvorky adresy IPv6, napríkladhttp://[2001:db8::1]:8080/. - Údaje formulára sledujú formát application/x-www-form-urlencoded (po anglicky), ktorý vytvárajú formuláre HTML a
URLSearchParams. Medzera sa zmení na+a nezakódované ostanú len písmená, číslice a* - . _, takže sa kódujú aj! ' ( ) ~. - Prísny RFC 3986 necháva nezakódované len nevyhradené znaky podľa RFC 3986 (po anglicky): písmená, číslice a
- . _ ~. OAuth 1.0 (RFC 5849) a AWS Signature Version 4 vyžadujú presne túto podobu, pretože podpis sa zhoduje, len ak obe strany kódujú!alebo*rovnako.
Rovnaké znaky v jednotlivých režimoch:
| Znak | Hodnota parametra | Celá URL | Údaje formulára | Prísny RFC 3986 |
|---|---|---|---|---|
| medzera | %20 | %20 | + | %20 |
& | %26 | & | %26 | %26 |
/ | %2F | / | %2F | %2F |
+ | %2B | + | %2B | %2B |
~ | ~ | ~ | %7E | ~ |
! | ! | ! | %21 | %21 |
* | * | * | * | %2A |
é | %C3%A9 | %C3%A9 | %C3%A9 | %C3%A9 |
Text sa vždy kóduje ako UTF-8 a hexadecimálne číslice sú vždy veľké. Ak vstup už obsahuje sekvencie ako %20, upozornenie to oznámi a ponúkne Radšej dekódovať, aby ste text omylom nezakódovali dvakrát.
Ak chcete poslať JSON v parametri dotazu, zmenšite ho vo formátovači JSON a zakódujte ako Hodnota parametra: {"id":7,"tags":["a","b"]} sa zmení na %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Funguje to aj opačne: parameter dekódujte tu a potom ho naformátujte tam.
Problémy pri URL decode: znamienka plus, %2520 a poškodené sekvencie
Dekódovanie zvyčajne funguje bez problémov, no štyri situácie ľudí zaskočia. Nástroj každú z nich vyrieši namiesto toho, aby skončil chybou:
- Znamienko plus znamená medzeru v údajoch formulára a vo väčšine reťazcov dotazu. Dekódovať + ako medzeru je predvolene zapnuté, takže
caf%C3%A9+au+laitsa dekóduje nacafé au lait. V celej URL sa ako medzery počítajú len plusy za?, pretože v ceste je plus obyčajný znak. Voľbu vypnite, keď je plus myslené doslovne. Plus zakódované ako%2Bostane vždy plusom. - Dvojité kódovanie vzniká, keď dve vrstvy kódu zakódujú tú istú hodnotu, pred čím RFC 3986 výslovne varuje. Každé
%sa zmení na%25, takže medzera sa zmení z%20na%2520. Ak dekódovaný výsledok stále obsahuje sekvencie ako%20, nástroj oznámi, že text bol pravdepodobne zakódovaný dvakrát, a ponúkne Dekódovať znova. - Neplatná sekvencia, teda
%, za ktorým nenasledujú dve hexadecimálne číslice, ako v100%alebo%G1, spôsobí, žedecodeURIComponentv JavaScripte vyhodí URIError. Tu takéto sekvencie ostanú bez zmeny, označené červenou a spočítané, a zvyšok textu sa dekóduje. - Staré odkazy v Latin-1 pochádzajú z čias pred UTF-8, keď niektoré weby kódovali
éako jediný bajt%E9.caf%E9nie je platné UTF-8, takžedecodeURIComponentzlyhá aunquotev Pythone vráticafa za ním náhradný znak U+FFFD. Nástroj číta takéto bajty ako Windows-1252, dekódujecaf%E9nacaféa pridá o tom poznámku.
Riadiace znaky v dekódovanom texte, ako tabulátor alebo nulový bajt, sa zobrazia ako viditeľné symboly ako ␉ a ␀, ale Kopírovať skopíruje skutočný text.
Parser URL: rozdelenie URL a úprava parametrov dotazu
Vložte adresu do poľa URL na záložke Rozbor a úprava URL a rozdelí sa na Protokol, Hostiteľ, Port, Cesta a Fragment, plus Používateľ a Heslo, ak ich URL obsahuje. Hodnoty sa zobrazujú dekódované, takže táto záložka je aj najrýchlejší spôsob, ako dekódovať parametre URL: čítate bežecké topánky namiesto be%C5%BEeck%C3%A9+top%C3%A1nky. Úpravy fungujú oboma smermi, ako adresný riadok prehliadača a tabuľka parametrov v Postmane. Zmeňte pole a URL sa okamžite prepíše so správnym kódovaním. Zmeňte URL a všetky časti sa načítajú znova. Časti, ktorých sa nedotknete, ostanú presne také, aké boli, znak po znaku.
Tabuľka Parametre dotazu uvádza každý parameter v poliach Názov a Hodnota. Zrušením začiarknutia Zahrnúť do URL parameter z adresy vynecháte bez zmazania, čo pomáha, keď hľadáte ten jediný parameter, ktorý rozbíja požiadavku. Pridať parameter, Odstrániť parameter a Zoradiť A až Z robia presne to, čo naznačuje ich názov. Opakované názvy ako tag=a&tag=b a názvy bez hodnoty ako ?debug sa zachovajú. Medzery v parametroch určuje, či sa medzery zapisujú ako %20 alebo +; predvolene sa riadi vloženou URL.
Prihlasovacie a platobné odkazy často nesú v parametri druhú URL, zakódovanú tak, aby sa jej vlastné ? a & nemiešali s vonkajšími:
https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2
Hodnota, ktorá je sama URL, typicky v redirect_uri, return, url alebo next, dostane tlačidlo Upraviť vnorenú URL. Vnútorná adresa https://app.example.com/callback?tab=2 sa otvorí ako samostatná úroveň s vlastnými časťami a parametrami, cesta späť vedie cez navigačnú cestu (Hlavná URL › redirect_uri) a každá zmena sa zapíše späť do vonkajšej URL v zakódovanej podobe. Kopírovať hlavnú URL skopíruje výsledok. Funguje to niekoľko úrovní do hĺbky.
Keď časť za # vyzerá ako parametre, ako #access_token=...&state=... v toku OAuth implicit flow alebo #/search?q=shoes v smerovaní jednostránkových aplikácií, vypíše ich aj druhá tabuľka, Parametre fragmentu.
Parser upozorní aj na problémy: URL bez protokolu, ktorú prehliadače berú ako relatívny odkaz, port mimo rozsahu od 0 do 65535 a znaky, ktoré sa musia zakódovať, ako medzery, znaky s diakritikou, " alebo <, čo Zakódovať ich opraví jedným krokom. Text bez adresy, ako a=1&b=2, sa číta ako reťazec dotazu. Pri internacionalizovanej doméne nástroj ukáže tvar Punycode, ktorý používa DNS a prehliadače, takže münchen.de sa zmení na xn--mnchen-3ya.de, a doména začínajúca xn-- dostane čitateľný tvar.
Kopírovať URL skopíruje hotovú adresu, Otvoriť ju otvorí v novej karte (len odkazy http a https) a Kopírovať ako JSON vám dá parametre ako objekt JSON, s opakovanými názvami zhromaždenými do poľa.
Odstránenie UTM a ďalších sledovacích parametrov z URL
Odkazy z newsletterov, reklám a sociálnych sietí nesú parametre, ktoré len prezrádzajú webu, odkiaľ návštevník prišiel. Parametre UTM (po anglicky) utm_source, utm_medium, utm_campaign, utm_term a utm_content pochádzajú z Urchinu, predchodcu Google Analytics. Identifikátory kliknutia ako fbclid (Facebook), gclid (Google Ads) a msclkid (Microsoft Advertising) pridávajú samotné platformy.
Parser ich označí štítkom sledovanie a Odstrániť sledovanie (n) ich zmaže naraz. Okrem každého parametra utm_* rozpozná viac než 20 ďalších, ako ttclid (TikTok), mc_cid (Mailchimp) a _hsenc (HubSpot). Parametre, ktoré stránka potrebuje, ostanú na mieste: v odkaze na obchod z Vyskúšať ukážku Odstrániť sledovanie (4) odstráni utm_source, utm_medium, utm_campaign a fbclid a ponechá q, size, return a fragment #reviews.
Odkaz, ktorý pôjde do QR kódu, sa oplatí najprv tu vyčistiť. Bez sledovacích parametrov je kratší a kratší odkaz dá menej hustý kód, ktorý sa ľahšie skenuje.
Čo je percent-encoding a ako sa znaky menia na %XX
Percent-encoding (po anglicky), nazývaný aj URL encoding, zapisuje znak ako % a za ním dve hexadecimálne číslice. URL môže obsahovať len obmedzenú množinu znakov ASCII a niektoré z nich majú úlohu: ? začína dotaz, & oddeľuje parametre, # začína fragment. RFC 3986 ich nazýva vyhradené znaky (: / ? # [ ] @ a ! $ & ' ( ) * + , ; =). Písmená, číslice a - . _ ~ sú nevyhradené a nikdy sa nemusia kódovať. Všetko ostatné a každý vyhradený znak použitý ako obyčajný údaj sa zakóduje.
Znaky mimo ASCII sa najprv zmenia na bajty UTF-8 a každý bajt dostane vlastné %XX:
éje U+00E9, čo UTF-8 ukladá ako dva bajty C3 A9, takže sa zmení na%C3%A9.€je U+20AC, tri bajty:%E2%82%AC.- Emoji ako U+1F600 (usmiata tvár) zaberá štyri bajty:
%F0%9F%98%80.
%c3%a9 a %C3%A9 znamenajú to isté, ale RFC 3986 odporúča veľké písmená, čo nástroj aj píše. Tabuľka percent-encodingu znakov, s ktorými sa stretnete najčastejšie:
| Znak | Zakódovaný | Znak | Zakódovaný |
|---|---|---|---|
| medzera | %20 | + | %2B |
! | %21 | , | %2C |
" | %22 | / | %2F |
# | %23 | : | %3A |
$ | %24 | ; | %3B |
% | %25 | = | %3D |
& | %26 | ? | %3F |
' | %27 | @ | %40 |
( | %28 | [ | %5B |
) | %29 | ] | %5D |
* | %2A | zalomenie riadka | %0A |
URL encoding v JavaScripte, Pythone a PHP
Každý jazyk má na to funkcie a líšia sa hlavne tým, ako zaobchádzajú s medzerami, lomkami a ! ' ( ) * ~.
JavaScript má encodeURIComponent (po anglicky) pre hodnotu, encodeURI pre celú adresu a URLSearchParams pre kódovanie formulárov:
encodeURIComponent("café & crème") // "caf%C3%A9%20%26%20cr%C3%A8me"
encodeURI("https://example.com/a b?q=café") // "https://example.com/a%20b?q=caf%C3%A9"
new URLSearchParams({ q: "café & crème" }).toString() // "q=caf%C3%A9+%26+cr%C3%A8me"
decodeURIComponent("caf%C3%A9") // "café"
decodeURIComponent nemení + na medzeru a pri neplatnej sekvencii, ako 100%, vyhodí URIError.
V Pythone sú funkcie v urllib.parse. quote predvolene zachová / (safe='/') a inak zakóduje všetko okrem nevyhradených znakov RFC 3986. quote_plus zapisuje medzery ako + a kóduje aj /:
from urllib.parse import quote, quote_plus, urlencode, unquote_plus
quote("café & crème/brûlée") # 'caf%C3%A9%20%26%20cr%C3%A8me/br%C3%BBl%C3%A9e'
quote("a b/c", safe="") # 'a%20b%2Fc'
quote_plus("café & crème/brûlée") # 'caf%C3%A9+%26+cr%C3%A8me%2Fbr%C3%BBl%C3%A9e'
urlencode({"q": "café & crème", "page": 2}) # 'q=caf%C3%A9+%26+cr%C3%A8me&page=2'
unquote_plus("caf%C3%A9+au+lait") # 'café au lait'
V PHP urlencode kóduje tak, ako to robí formulár HTML, a medzeru zapíše ako +, zatiaľ čo rawurlencode sleduje RFC 3986 a zapíše %20:
urlencode("café & crème"); // "caf%C3%A9+%26+cr%C3%A8me"
rawurlencode("café & crème"); // "caf%C3%A9%20%26%20cr%C3%A8me"
rawurlencode dáva rovnaký výsledok ako Prísny RFC 3986. urlencode zodpovedá Údaje formulára okrem *, ktorú zakóduje ako %2A.
Často kladené otázky
Má sa medzera zakódovať ako %20 alebo +?
%20 funguje v URL všade. + znamená medzeru len v reťazci dotazu a v údajoch formulára, teda vo formáte, ktorý posielajú formuláre HTML. V ceste je + obyčajné znamienko plus, takže /a+b ostane /a+b. Keď hodnota dotazu potrebuje skutočné plus, zapíšte ho ako %2B. V nástroji Údaje formulára zapisuje medzery ako + a ostatné tri režimy ako %20.
Čo znamenajú %20, %2F a %3D v URL?
Sú to zakódované znaky: %20 je medzera, %2F lomka a %3D znak rovná sa. Ďalšie, ktoré vidíte často, sú %26 (&), %3F (?), %3A (:), %2C (čiarka) a %27 (apostrof). Dve číslice sú kód znaku v hexadecimálnej sústave. Znaky s diakritikou a ďalšie znaky mimo ASCII zaberajú dva až štyri takéto páry, ako %C3%A9 pre é. Vložte celý reťazec do dekódovača a prečítajte si ho.
Aký je rozdiel medzi encodeURI a encodeURIComponent?
encodeURI je určené pre celú adresu a znaky, ktoré ju štruktúrujú, ako : / ? # & =, nechá na pokoji. encodeURIComponent je určené pre jednu časť, hodnotu parametra alebo časť cesty, a kóduje aj tieto znaky, takže https://example.com/?a=1&b=2 sa zmení na https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. V tomto nástroji Hodnota parametra zodpovedá encodeURIComponent a Celá URL je ako encodeURI, ale zachová existujúce sekvencie ako %20 namiesto toho, aby ich zmenila na %2520.
Ako odstrániť parametre UTM z URL?
Vložte odkaz do záložky Rozbor a úprava URL a stlačte Odstrániť sledovanie (n). Naraz zmaže každú značku utm_* a identifikátory kliknutia ako fbclid a gclid. Potom stlačte Kopírovať URL. Ak chcete vynechať len niektoré, použite Odstrániť parameter na riadkoch, ktoré nechcete.
Je URL encoding to isté ako šifrovanie alebo Base64?
Nie. URL encoding nič neskrýva: ktokoľvek môže caf%C3%A9 dekódovať späť na café, takže nikdy nechráni heslo ani token. Len robí znaky bezpečnými na použitie v adrese. Base64 je iné kódovanie, ktoré mení ľubovoľné údaje, aj binárne súbory, na reťazec z 64 znakov. Reťazec Base64 v URL stále potrebuje zakódované +, / a =, pokiaľ nepoužijete variant bezpečný pre URL, ktorý vie vytvoriť kódovač a dekódovač Base64.
Nahrávajú sa alebo ukladajú URL, ktoré vložím?
Nie. Kódovanie, dekódovanie a rozbor bežia vo vašom prehliadači a nič, čo vložíte, sa neposiela na server. Na tom záleží, pretože URL často nesú prístupové tokeny, ID relácií alebo kódy na obnovenie hesla. Prehliadač si pamätá len vami vybranú záložku a voľby, nikdy texty. Jediné, čo adresu načíta, je Otvoriť, ktoré ju otvorí v novej karte rovnako, ako keby ste kliknuli na odkaz.
Ďalšie nástroje pre programátorov nájdete v kategórii Vývojári a nástroje, ktoré menia jeden formát na iný, sú zhromaždené v kategórii Prevodníky. Ak chcete zistiť, čím sa líšia dve dlhé URL, napríklad funkčné a nefunkčné volanie API, vložte ich do nástroja na porovnanie textov a porovnajte ich po znakoch.