URL kódoló és dekódoló
Egy lekérdezési értékhez vagy útvonalszakaszhoz. Mindent kódol a betűk, a számjegyek és a - _ . ! ~ * ' ( ) kivételével, ugyanúgy, mint az encodeURIComponent.
Illesszen be egy URL-t fent. A részei és a paraméterei itt jelennek meg, szerkesztésre készen.
Lekérdezési paraméterek
Ennek az URL-nek nincsenek lekérdezési paraméterei.
Fragmentum paraméterei
Minden a böngészőjében fut, és semmi, amit beilleszt, nem kerül feltöltésre. Ez fontos, mert az URL-ek gyakran tokeneket és munkamenet-azonosítókat tartalmaznak.
URL kódolás és dekódolás online, gépelés közben: az eszköz a szóközöket, az ékezetes betűket és az olyan jeleket, mint az & vagy a ?, százalékkal kódolt sorozatokká (például %20) alakítja, és vissza is fordítja olvasható szöveggé. A második fül egy URL-elemző. Bármely címet felbont protokollra, gazdagépre, útvonalra és lekérdezési paraméterekre, amelyeket szerkeszthet, kikapcsolhat vagy megtisztíthat a követőcímkéktől, a helyesen kódolt URL-t pedig visszaírja Önnek. Minden a böngészőjében történik.
URL kódolás és dekódolás lépésről lépésre
- Írjon vagy illesszen be szöveget a Kódolás / Dekódolás fül mezőjébe. Az Eredmény minden leütéssel frissül.
- Válassza ki az Irányt. A Kódolás URL-ben biztonságossá teszi a szöveget, a Dekódolás a
caf%C3%A9%20au%20laitszöveget visszaalakítjacafé au laitszöveggé. Ha%20-hoz hasonló sorozatokat tartalmazó szöveget illeszt az üres mezőbe, az eszköz magától Dekódolás módra vált (a Kódolja inkább gomb visszavált). Ha Dekódolás módban kódolásra szoruló egyszerű szöveget illeszt be, ugyanígy Kódolás módra vált, a Dekódolja inkább gombbal. - Kódoláskor a Kódolás típusa alatt válassza ki, mi a szöveg (lásd a következő szakaszt). Az alapértelmezett Paraméterérték egyetlen lekérdezési értékhez megfelelő.
- A Másolás a vágólapra teszi az eredményt. A Csere az eredményt a bemenetbe helyezi, és megfordítja az irányt. Ez gyors oda-vissza ellenőrzés: az imént kódolt szöveg dekódolásának az eredeti szöveget kell adnia.
Az eszköz minden megváltoztatott karaktert kiemel az eredményben. Ha fölé viszi az egeret, látja a karaktert, az Unicode kódpontját és a bájtjait, például é U+00E9 %C3%A9. A mezők alatt megjelenik a Karakterek, az UTF-8 bájtok és a Kódolt karakterek (illetve Dekódolt karakterek) száma. A Példa kipróbálása a Ár: 50 % kedvezmény, málnás & túrós rétes? Igen! mondatot tölti be, amely 48 karakter, de 55 UTF-8 bájt, mert minden ékezetes betű két bájtot foglal.
Kódoláskor a Soronként külön minden sort önállóan kódol, és megtartja a sortöréseket, ami értéklistákhoz vagy hivatkozásokhoz való. Enélkül a sortörés is kódolódik, és %0A lesz belőle. Ha a szöveg paraméteres URL, az eszköz felajánlja a Bontsa részekre gombot, amely megnyitja a címet az elemző fülön.
URL kódolása: paraméter, teljes cím vagy űrlapadatok
Nem minden karaktert kell mindenhol kódolni. A perjel az útvonalban mappákat választ el, a paraméterértékben viszont egyszerű adat, ezért a helyes eredmény attól függ, mit kódol. A Kódolás típusa négy módot kínál:
- A Paraméterérték a JavaScript
encodeURIComponentfüggvényéhez hasonlóan működik, és egy lekérdezési értékhez vagy útvonalszakaszhoz való. Mindent kódol a betűk, a számjegyek és a- _ . ! ~ * ' ( )kivételével, így az értékben lévő&,=,/vagy?nem törheti el az URL-t. Acafé & crèmekódolásacaf%C3%A9%20%26%20cr%C3%A8me, amely aq=után azonnal használható. - A Teljes URL olyan teljes címhez való, amelyet csak rendbe kell tenni. Kódolja a szóközöket, a nem ASCII karaktereket, a vezérlőkaraktereket, a backtick karaktert és a
" < > \ ^ { | }jeleket, de meghagyja mindazt, ami az URL szerkezetét adja:: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Így ahttps://example.com/search?q=café au lait&lang=frcímbőlhttps://example.com/search?q=caf%C3%A9%20au%20lait&lang=frlesz. A már kódolt sorozatok változatlanok maradnak, az önálló%pedig%25lesz. Ebben tér el a JavaScriptencodeURIfüggvényétől, amely a meglévő%20-at%2520-szá alakítja, és kódolja az IPv6-címek szögletes zárójelét is, például ahttp://[2001:db8::1]:8080/címben. - Az Űrlapadatok az application/x-www-form-urlencoded formátumot követi (angolul), amelyet a HTML-űrlapok és az
URLSearchParamsállít elő. A szóköz+lesz, és csak a betűk, a számjegyek és a* - . _maradnak kódolatlanok, ezért a! ' ( ) ~is kódolódik. - A Szigorú RFC 3986 csak az RFC 3986 (angolul) nem fenntartott karaktereit hagyja kódolatlanul: a betűket, a számjegyeket és a
- . _ ~jeleket. Az OAuth 1.0 (RFC 5849) és az AWS Signature Version 4 pontosan ezt a formát követeli meg, mert az aláírás csak akkor egyezik, ha mindkét oldal ugyanúgy kódolja a!vagy a*jelet.
Ugyanazok a karakterek az egyes módokban:
| Karakter | Paraméterérték | Teljes URL | Űrlapadatok | Szigorú RFC 3986 |
|---|---|---|---|---|
| szóköz | %20 | %20 | + | %20 |
& | %26 | & | %26 | %26 |
/ | %2F | / | %2F | %2F |
+ | %2B | + | %2B | %2B |
~ | ~ | ~ | %7E | ~ |
! | ! | ! | %21 | %21 |
* | * | * | * | %2A |
é | %C3%A9 | %C3%A9 | %C3%A9 | %C3%A9 |
A szöveg kódolása mindig UTF-8-ban történik, a hexadecimális számjegyek pedig mindig nagybetűsek. Ha a bemenet már tartalmaz %20-hoz hasonló sorozatokat, egy megjegyzés szól erről, és felajánlja a Dekódolja inkább gombot, hogy ne kódolja véletlenül kétszer a szöveget.
Ha JSON-t szeretne átadni egy lekérdezési paraméterben, tömörítse a JSON formázóban, és kódolja Paraméterértékként: a {"id":7,"tags":["a","b"]} így lesz %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Fordítva is működik: dekódolja itt a paramétert, majd formázza ott.
URL dekódolás hibái: plusz jelek, %2520 és hibás sorozatok
A dekódolás általában egyszerűen működik, de négy helyzet szokott gondot okozni. Az eszköz mindegyiket kezeli ahelyett, hogy hibával leállna:
- A plusz jel az űrlapadatokban és a legtöbb lekérdezési karakterláncban szóközt jelent. Az A + dekódolása szóközként alapértelmezés szerint be van kapcsolva, így a
caf%C3%A9+au+laitszövegbőlcafé au laitlesz. Teljes URL-ben csak a?utáni plusz jelek számítanak szóköznek, mert az útvonalban a plusz közönséges karakter. Kapcsolja ki a beállítást, ha a plusz jel szó szerint értendő. A%2Bformában kódolt plusz mindig plusz jel marad. - A dupla kódolás akkor történik, amikor két kódréteg külön kódolja ugyanazt az értéket, amitől az RFC 3986 kifejezetten óv. Minden
%%25lesz, így a szóköz%20helyett%2520lesz. Ha a dekódolt eredmény még mindig%20-hoz hasonló sorozatokat tartalmaz, az eszköz jelzi, hogy a szöveget valószínűleg kétszer kódolták, és felajánlja a Dekódolás újra gombot. - Az érvénytelen sorozat, vagyis a
%, amelyet nem követ két hexadecimális számjegy, mint a100%vagy a%G1esetében, a JavaScriptdecodeURIComponentfüggvényében URIError hibát okoz. Itt az ilyen sorozatok változatlanok maradnak, pirossal jelölve és megszámolva, a szöveg többi része pedig dekódolódik. - A régi Latin-1 hivatkozások az UTF-8 előtti időkből származnak, amikor egyes oldalak az
ébetűt egyetlen%E9bájttal kódolták. Acaf%E9nem érvényes UTF-8, ezért adecodeURIComponenthibát jelez, a Pythonunquotefüggvénye pedigcafszöveget ad, utána az U+FFFD helyettesítő karakterrel. Az eszköz az ilyen bájtokat Windows-1252 szerint olvassa, acaf%E9szövegetcafészöveggé dekódolja, és megjegyzésben jelzi ezt.
A dekódolt szövegben lévő vezérlőkaraktereket, például a tabulátort vagy a null bájtot, látható szimbólumok mutatják, mint a ␉ és a ␀, de a Másolás a valódi szöveget másolja.
URL-elemző: cím felbontása és a lekérdezési paraméterek szerkesztése
Illesszen be egy címet az URL szerkesztése fül URL mezőjébe, és az felbomlik Protokoll, Gazdagép, Port, Útvonal és Fragmentum részekre, valamint Felhasználónév és Jelszó mezőre, ha az URL tartalmaz ilyet. Az értékek dekódolva jelennek meg, ezért ez a fül az URL paraméterek dekódolásának leggyorsabb módja is: női futócipő szöveget olvas n%C5%91i+fut%C3%B3cip%C5%91 helyett. A szerkesztés mindkét irányban működik, mint a Postman címsora és paramétertáblája. Ha módosít egy mezőt, az URL azonnal, helyesen kódolva íródik át, ha pedig magát az URL-t módosítja, minden rész újra beolvasódik. Az érintetlenül hagyott részek karakterre pontosan olyanok maradnak, amilyenek voltak.
A Lekérdezési paraméterek táblázat minden paramétert felsorol a Név és az Érték megadásával. Törölje a Szerepeljen az URL-ben jelölést, ha egy paramétert törlés nélkül ki szeretne hagyni, ami akkor segít, ha azt az egy paramétert keresi, amely elront egy kérést. A Paraméter hozzáadása, a Paraméter törlése és a Rendezés A-Z azt teszi, amit a neve mond. Az ismétlődő nevek, például a tag=a&tag=b, és az érték nélküli nevek, például a ?debug, megmaradnak. A Szóközök a paraméterekben dönti el, hogy a szóközök %20 vagy + formában íródnak-e, alapértelmezés szerint a beillesztett URL-t követi.
A bejelentkezési és fizetési hivatkozások gyakran egy második URL-t hordoznak egy paraméterben, úgy kódolva, hogy a saját ? és & jelei ne keveredjenek a külsőkével:
https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2
Az az érték, amely maga is URL, jellemzően a redirect_uri, return, url vagy next paraméterben, A beágyazott URL szerkesztése gombot kap. A belső cím, a https://app.example.com/callback?tab=2, saját szintként nyílik meg saját részekkel és paraméterekkel, a morzsamenü (Fő URL › redirect_uri) visszavezet, és minden módosítás kódolva visszaíródik a külső URL-be. A Fő URL másolása az eredményt másolja. Ez több szinten át is működik.
Ha a # utáni rész paraméterekre hasonlít, mint az OAuth implicit folyamat #access_token=...&state=... részében, vagy az egyoldalas alkalmazások útvonalaiban a #/search?q=shoes alakban, egy második táblázat, a Fragmentum paraméterei azokat is felsorolja.
Az elemző a problémákra is felhívja a figyelmet: a protokoll nélküli URL-re, amelyet a böngészők relatív hivatkozásként kezelnek, a 0 és 65535 tartományon kívüli portra, valamint a kódolandó karakterekre, például szóközre, ékezetes betűre, " vagy < jelre, amelyeket a Kódolja őket gomb egy lépésben javít. A címet nem tartalmazó szöveget, például az a=1&b=2 értéket, lekérdezési karakterláncként olvassa be. A nemzetköziesített domainnév esetén az eszköz megmutatja a DNS és a böngészők által használt Punycode alakot, így a münchen.de címből xn--mnchen-3ya.de lesz, az xn-- kezdetű domain pedig megkapja az olvasható alakját.
Az URL másolása a kész címet másolja, a Megnyitás új lapon nyitja meg (csak http és https hivatkozásoknál), a Másolás JSON-ként pedig JSON-objektumként adja a paramétereket, az ismétlődő neveket tömbbe gyűjtve.
UTM és más követőparaméterek eltávolítása URL-ből
A hírlevelekből, hirdetésekből és közösségi hálózatokról származó hivatkozások olyan paramétereket hordoznak, amelyek csak azt mondják meg az oldalnak, honnan érkezett a látogató. Az UTM-paraméterek (utm_source, utm_medium, utm_campaign, utm_term és utm_content) az Urchinig nyúlnak vissza, a Google Analytics elődjéig. Az olyan kattintásazonosítókat, mint az fbclid (Facebook), a gclid (Google Ads) és az msclkid (Microsoft Advertising), maguk a platformok fűzik hozzá.
Az elemző ezeket követés címkével jelöli meg, a Követés eltávolítása (n) pedig egyszerre törli mindet. Az utm_* paramétereken kívül több mint 20 másikat is felismer, például a ttclid (TikTok), az mc_cid (Mailchimp) és a _hsenc (HubSpot) azonosítót. Az oldalnak szükséges paraméterek a helyükön maradnak: a Példa kipróbálása webáruházi hivatkozásában a Követés eltávolítása (4) eltávolítja az utm_source, utm_medium, utm_campaign és fbclid paramétert, a q, size, return paramétert és a #reviews fragmentumot pedig megtartja.
Az a hivatkozás, amely QR-kódba kerül, megér egy előzetes megtisztítást itt. Követőparaméterek nélkül rövidebb, a rövidebb hivatkozásból pedig kevésbé sűrű, könnyebben beolvasható kód lesz.
Mi a százalékkódolás, és hogyan lesz a karakterekből %XX
A százalékkódolás, más néven URL-kódolás, egy karaktert % jellel és két hexadecimális számjeggyel ír le. Az URL csak korlátozott ASCII karakterkészletet tartalmazhat, és ezek egy része feladatot lát el: a ? kezdi a lekérdezést, az & választja el a paramétereket, a # kezdi a fragmentumot. Az RFC 3986 ezeket fenntartott karaktereknek nevezi (: / ? # [ ] @ és ! $ & ' ( ) * + , ; =). A betűk, a számjegyek és a - . _ ~ jelek nem fenntartottak, és soha nem kell őket kódolni. Minden mást, valamint minden egyszerű adatként használt fenntartott karaktert kódolni kell.
Az ASCII-n kívüli karaktereket először UTF-8 bájtokká alakítják, és minden bájt saját %XX kódot kap:
- Az
éaz U+00E9, amelyet az UTF-8 a C3 A9 két bájttal tárol, így%C3%A9lesz belőle. - A
€az U+20AC, három bájt:%E2%82%AC. - Egy emoji, például az U+1F600 (vigyorgó arc), négy bájtot foglal:
%F0%9F%98%80.
A %c3%a9 és a %C3%A9 ugyanazt jelenti, de az RFC 3986 a nagybetűt ajánlja, és az eszköz is ezt írja. A leggyakrabban előforduló karakterek százalékkódolási táblázata:
| Karakter | Kódolva | Karakter | Kódolva |
|---|---|---|---|
| szóköz | %20 | + | %2B |
! | %21 | , | %2C |
" | %22 | / | %2F |
# | %23 | : | %3A |
$ | %24 | ; | %3B |
% | %25 | = | %3D |
& | %26 | ? | %3F |
' | %27 | @ | %40 |
( | %28 | [ | %5B |
) | %29 | ] | %5D |
* | %2A | sortörés | %0A |
URL kódolás JavaScriptben, Pythonban és PHP-ban
Minden nyelvnek megvannak a maga függvényei, és főleg abban különböznek, hogyan kezelik a szóközöket, a perjeleket és a ! ' ( ) * ~ karaktereket.
A JavaScriptben az encodeURIComponent (angolul) egy értékhez, az encodeURI egy teljes címhez, az URLSearchParams pedig az űrlapkódoláshoz való:
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é"
A decodeURIComponent nem alakítja a + jelet szóközzé, és érvénytelen sorozatnál, például a 100% esetében, URIError hibát dob.
Pythonban a függvények az urllib.parse modulban vannak. A quote alapértelmezés szerint megtartja a / jelet (safe='/'), egyébként mindent kódol az RFC 3986 nem fenntartott karaktereinek kivételével. A quote_plus a szóközt + jellel írja, és a / jelet is kódolja:
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'
PHP-ban az urlencode úgy kódol, mint egy HTML-űrlap, és a szóközt + jellel írja, a rawurlencode viszont az RFC 3986-ot követi, és %20-at ír:
urlencode("café & crème"); // "caf%C3%A9+%26+cr%C3%A8me"
rawurlencode("café & crème"); // "caf%C3%A9%20%26%20cr%C3%A8me"
A rawurlencode ugyanazt adja, mint a Szigorú RFC 3986. Az urlencode megfelel az Űrlapadatok módnak, kivéve a * jelet, amelyet %2A formában kódol.
Gyakori kérdések
A szóközt %20 vagy + formában kell kódolni?
A %20 az URL-ben mindenhol működik. A + csak a lekérdezési karakterláncban és az űrlapadatokban, vagyis a HTML-űrlapok által küldött formátumban jelent szóközt. Az útvonalban a + közönséges plusz jel, így az /a+b változatlanul /a+b marad. Ha egy lekérdezési értékben valódi plusz jelre van szükség, írja %2B alakban. Az eszközben az Űrlapadatok a szóközt + jellel, a másik három mód %20-szal írja.
Mit jelent a %20, a %2F és a %3D az URL-ben?
Kódolt karakterek: a %20 szóköz, a %2F perjel, a %3D egyenlőségjel. Gyakran látható még a %26 (&), a %3F (?), a %3A (:), a %2C (vessző) és a %27 (aposztróf). A két számjegy a karakter kódja hexadecimálisan. Az ékezetes betűk és más nem ASCII karakterek két-négy ilyen párt foglalnak, például az é betű %C3%A9 alakban. Illessze be a teljes karakterláncot a dekódolóba, hogy elolvashassa.
Mi a különbség az encodeURI és az encodeURIComponent között?
Az encodeURI egy teljes címhez való, és békén hagyja az URL szerkezetét adó karaktereket, például a : / ? # & = jeleket. Az encodeURIComponent egyetlen részhez, egy paraméterértékhez vagy útvonalszakaszhoz való, és ezeket a karaktereket is kódolja, így a https://example.com/?a=1&b=2 címből https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2 lesz. Ebben az eszközben a Paraméterérték az encodeURIComponent függvénynek felel meg, a Teljes URL pedig olyan, mint az encodeURI, de a meglévő sorozatokat, például a %20-at megtartja ahelyett, hogy %2520-szá alakítaná.
Hogyan távolíthatom el az UTM-paramétereket egy URL-ből?
Illessze be a hivatkozást az URL szerkesztése fülre, és nyomja meg a Követés eltávolítása (n) gombot. Egyszerre törli az összes utm_* címkét és az olyan kattintásazonosítókat, mint az fbclid és a gclid. Utána nyomja meg az URL másolása gombot. Ha csak néhányat szeretne elhagyni, használja a Paraméter törlése gombot a nem kívánt soroknál.
Az URL kódolás ugyanaz, mint a titkosítás vagy a Base64?
Nem. Az URL kódolás semmit nem rejt el: bárki visszadekódolhatja a caf%C3%A9 szöveget café szöveggé, ezért jelszót vagy tokent soha nem véd. Csak biztonságossá teszi a karaktereket a címben való használatra. A Base64 másfajta kódolás, amely bármilyen adatot, a bináris fájlokat is beleértve, 64 különböző karakterből álló ábécé jeleivel ír le. Az URL-ben lévő Base64 karakterláncban is kódolni kell a +, / és = jeleket, hacsak nem az URL-biztonságos változatot használja, amelyet a Base64 kódoló és dekódoló elő tud állítani.
Feltöltődnek vagy tárolódnak a beillesztett URL-ek?
Nem. A kódolás, a dekódolás és az elemzés a böngészőjében fut, és semmi, amit beilleszt, nem kerül a szerverre. Ez azért számít, mert az URL-ek gyakran hordoznak hozzáférési tokeneket, munkamenet-azonosítókat vagy jelszó-visszaállító kódokat. A böngésző csak a kiválasztott fület és a beállításokat jegyzi meg, a szövegeket soha. Csak a Megnyitás tölt be címet: új lapon nyitja meg, pontosan úgy, mintha rákattintana a hivatkozásra.
További programozói eszközöket a Fejlesztők kategóriában talál, az egyik formátumot a másikba alakító eszközöket pedig a Konverterek gyűjti össze. Ha két hosszú URL közötti eltérést keresi, például egy működő és egy hibás API-hívásét, illessze be őket a szöveg-összehasonlító eszközbe, és hasonlítsa össze karakterenként.