URL kodirnik in dekodirnik

Acrafto Team Razvijalci
Posodobljeno
Kodiraj kot

Za eno vrednost v poizvedbi ali en segment poti. Kodira vse razen črk, števk in - _ . ! ~ * ' ( ), enako kot encodeURIComponent.

Rezultat

Vse teče v vašem brskalniku in nič, kar prilepite, se ne naloži. To je pomembno, ker URL pogosto nosijo žetone in ID-je sej.

URL kodirnik in dekodirnik na spletu: orodje med tipkanjem pretvarja presledke, črke z diakritičnimi znaki in znake, kot sta & ali ?, v odstotkovna zaporedja, na primer %20, in jih spet spremeni v berljivo besedilo. Drugi zavihek je razčlenjevalnik URL. Poljuben naslov razdeli na protokol, gostitelja, pot in parametre poizvedbe, ki jih lahko urejate, izklopite ali očistite sledilnih oznak, pravilno kodiran URL pa nato zapiše namesto vas. Vse poteka v vašem brskalniku.

Kako kodirati in dekodirati URL

  1. Vnesite ali prilepite besedilo v polje na zavihku Kodiraj / dekodiraj. Rezultat se osveži ob vsakem pritisku tipke.
  2. Izberite Smer. Kodiraj naredi besedilo varno za uporabo v URL, Dekodiraj pa caf%C3%A9%20au%20lait spremeni nazaj v café au lait. Če v prazno polje prilepite besedilo z zaporedji, kot je %20, orodje samo preklopi na Dekodiraj (z gumbom Kodiraj namesto tega preklopite nazaj). Enako deluje obratno: navadno besedilo, ki ga je treba kodirati, prilepljeno v načinu Dekodiraj, preklopi na Kodiraj, z gumbom Dekodiraj namesto tega.
  3. Pri kodiranju pod Kodiraj kot izberite, kakšno besedilo kodirate (glejte naslednji razdelek). Privzeta možnost Vrednost parametra je prava za posamezno vrednost v poizvedbi.
  4. Kopiraj kopira rezultat v odložišče. Zamenjaj prenese rezultat v vnosno polje in obrne smer. To je hiter preizkus v obe smeri: dekodiranje pravkar kodiranega besedila mora vrniti vaše izvirno besedilo.

Vsak znak, ki ga je orodje spremenilo, je v rezultatu poudarjen. Ko miškin kazalec zadržite nad njim, vidite znak, njegovo kodno točko Unicode in bajte, na primer é U+00E9 %C3%A9. Pod polji so prikazana števila Znaki, Bajti UTF-8 in Kodirani znaki (ali Dekodirani znaki). Preizkusi primer naloži stavek Cena: 50 % popusta, čaj & žemlje? Super!, ki ima 40 znakov, a 42 bajtov UTF-8, ker vsaka črka s strešico (č, ž) zavzame dva bajta.

Pri kodiranju Vsako vrstico posebej kodira vsako vrstico zase in ohrani prelome vrstic, kar je primerno za seznam vrednosti ali povezav. Brez te možnosti se tudi prelom vrstice kodira in postane %0A. Kadar je besedilo URL s parametri, orodje ponudi Razdeli na dele, kar naslov odpre v zavihku razčlenjevalnika.

Kodiranje URL: parameter, cel naslov ali podatki obrazca

Vsega ni treba povsod kodirati. Poševnica v poti loči mape, znotraj vrednosti parametra pa je navaden podatek, zato je pravi rezultat odvisen od tega, kaj kodirate. Kodiraj kot ponuja štiri načine:

  • Vrednost parametra deluje kot JavaScriptov encodeURIComponent in je primeren za eno vrednost v poizvedbi ali en segment poti. Kodira vse razen črk, števk in - _ . ! ~ * ' ( ), zato &, =, / ali ? v vrednosti ne morejo pokvariti URL. Kodiranje café & crème da caf%C3%A9%20%26%20cr%C3%A8me, pripravljeno za vstavitev za q=.
  • Cel URL je za popoln naslov, ki ga je treba le počistiti. Kodira presledke, znake zunaj ASCII, kontrolne znake, obrnjeni opuščaj in " < > \ ^ { | }, obdrži pa vse, kar daje URL strukturo: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Tako https://example.com/search?q=café au lait&lang=fr postane https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Že kodirana zaporedja ostanejo, samostojni % pa postane %25. Tu se razlikuje od JavaScriptovega encodeURI, ki obstoječi %20 spremeni v %2520 in kodira oglate oklepaje naslova IPv6, na primer http://[2001:db8::1]:8080/.
  • Podatki obrazca sledijo obliki application/x-www-form-urlencoded (v angleščini), ki jo ustvarjajo obrazci HTML in URLSearchParams. Presledek postane +, nekodirane ostanejo le črke, števke in * - . _, zato so kodirani tudi ! ' ( ) ~.
  • Strogi RFC 3986 pusti nekodirane samo nerezervirane znake po RFC 3986 (v angleščini): črke, števke in - . _ ~. Natanko to obliko zahtevata OAuth 1.0 (RFC 5849) in podpis AWS različice 4, saj se podpis ujema le, če obe strani ! ali * kodirata enako.

Isti znaki v vsakem načinu:

ZnakVrednost parametraCel URLPodatki obrazcaStrogi RFC 3986
presledek%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Besedilo se vedno kodira kot UTF-8, šestnajstiške števke pa so vedno velike. Če vnos že vsebuje zaporedja, kot je %20, orodje to sporoči z opombo in ponudi Dekodiraj namesto tega, da besedila pomotoma ne kodirate dvakrat.

Če želite v parametru poizvedbe posredovati JSON, ga v orodju za oblikovanje JSON strnite in kodirajte kot Vrednost parametra: {"id":7,"tags":["a","b"]} postane %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Deluje tudi v obratni smeri: parameter dekodirajte tukaj, nato ga oblikujte tam.

Težave pri dekodiranju URL: plusi, %2520 in pokvarjena zaporedja

Dekodiranje običajno preprosto deluje, a štiri situacije ljudi pogosto zmedejo. Orodje vsako od njih obravnava, namesto da bi se ustavilo z napako:

  • Znak plus v podatkih obrazca in večini poizvedb pomeni presledek. Dekodiraj + kot presledek je privzeto vklopljeno, zato se caf%C3%A9+au+lait dekodira v café au lait. V celotnem URL se kot presledki štejejo le plusi za znakom ?, ker je plus v poti navaden znak. Možnost izklopite, kadar plus pomeni dobesedni plus. Plus, kodiran kot %2B, vedno ostane plus.
  • Dvojno kodiranje nastane, kadar dve plasti kode kodirata isto vrednost, česar RFC 3986 izrecno odsvetuje. Vsak % postane %25, zato se presledek iz %20 spremeni v %2520. Če dekodirani rezultat še vedno vsebuje zaporedja, kot je %20, orodje sporoči, da je bilo besedilo verjetno kodirano dvakrat, in ponudi Dekodiraj znova.
  • Neveljavno zaporedje, torej %, za katerim ne sledita dve šestnajstiški števki, kot v 100% ali %G1, sproži v JavaScriptovem decodeURIComponent napako URIError. Tu takšna zaporedja ostanejo nespremenjena, so rdeče označena in prešteta, preostalo besedilo pa se dekodira.
  • Stare povezave Latin-1 izvirajo iz časa pred UTF-8, ko so nekatera spletna mesta znak é kodirala kot en sam bajt %E9. caf%E9 ni veljaven UTF-8, zato decodeURIComponent odpove, unquote v Pythonu pa vrne caf in zamenjalni znak U+FFFD. Orodje takšne bajte prebere kot Windows-1252, caf%E9 dekodira v café in to doda v opombo.

Kontrolni znaki v dekodiranem besedilu, na primer tabulator ali ničelni bajt, so prikazani kot vidni simboli, kot sta ␉ in ␀, a Kopiraj kopira pravo besedilo.

Razčlenjevalnik URL: razdelitev naslova in urejanje parametrov poizvedbe

Naslov prilepite v polje URL na zavihku Razčleni in uredi URL in razdeljen bo na Protokol, Gostitelj, Vrata, Pot in Fragment, poleg tega pa na Uporabniško ime in Geslo, če ju URL vsebuje. Vrednosti so prikazane dekodirane, zato je ta zavihek tudi najhitrejši način za dekodiranje parametrov URL: preberete tekaški čevlji namesto teka%C5%A1ki+%C4%8Devlji. Urejanje deluje v obe smeri, tako kot naslovna vrstica in tabela parametrov v orodju Postman. Spremenite polje in URL se takoj prepiše, pravilno kodiran. Spremenite URL in vsi deli se preberejo znova. Deli, ki se jih ne dotaknete, ostanejo znak za znakom enaki.

Tabela Parametri poizvedbe našteje vsak parameter z njegovim Ime in Vrednost. Če odkljukate Vključi v URL, parameter izpustite, ne da bi ga izbrisali, kar pomaga pri iskanju parametra, ki pokvari zahtevek. Dodaj parameter, Odstrani parameter in Razvrsti od A do Ž naredijo, kar piše na njih. Ponovljena imena, kot je tag=a&tag=b, in imena brez vrednosti, kot je ?debug, se ohranijo. Presledki v parametrih določa, ali se presledki zapišejo kot %20 ali +; privzeto sledi prilepljenemu URL.

Povezave za prijavo in plačilo pogosto nosijo še en URL znotraj parametra, kodiran tako, da se njegova ? in & ne pomešata z zunanjima:

https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2

Vrednost, ki je sama URL, običajno v redirect_uri, return, url ali next, dobi gumb Uredi vgnezdeni URL. Notranji naslov https://app.example.com/callback?tab=2 se odpre kot samostojna raven s svojimi deli in parametri, drobtinice (Glavni URL › redirect_uri) vodijo nazaj, vsaka sprememba pa se kodirana zapiše nazaj v zunanji URL. Kopiraj glavni URL kopira rezultat. To deluje na več ravneh.

Kadar del za # izgleda kot parametri, na primer #access_token=...&state=... pri toku OAuth implicit ali #/search?q=shoes pri poteh enostranskih aplikacij, jih navede tudi druga tabela, Parametri fragmenta.

Razčlenjevalnik opozori tudi na težave: URL brez protokola, ki ga brskalniki obravnavajo kot relativno povezavo, vrata zunaj območja od 0 do 65535 in znake, ki jih je treba kodirati, kot so presledki, črke z diakritičnimi znaki, " ali <, kar Kodiraj jih odpravi v enem koraku. Besedilo brez naslova, kot je a=1&b=2, se prebere kot niz poizvedbe. Pri internacionaliziranem domenskem imenu (v angleščini) orodje pokaže obliko Punycode, ki jo uporabljata DNS in brskalniki, zato münchen.de postane xn--mnchen-3ya.de, domena, ki se začne z xn--, pa dobi berljivo obliko.

Kopiraj URL kopira dokončni naslov, Odpri ga odpre v novem zavihku (samo povezave http in https), Kopiraj kot JSON pa vam da parametre kot objekt JSON, pri čemer so ponovljena imena zbrana v polje.

Odstranjevanje UTM in drugih parametrov sledenja iz URL

Povezave iz e-novic, oglasov in družbenih omrežij nosijo parametre, ki spletnemu mestu samo povedo, od kod je prišel obiskovalec. Parametri UTM (v angleščini) utm_source, utm_medium, utm_campaign, utm_term in utm_content izvirajo iz orodja Urchin, predhodnika Google Analytics. Identifikatorje klikov, kot so fbclid (Facebook), gclid (Google Ads) in msclkid (Microsoft Advertising), dodajo same platforme.

Razčlenjevalnik jih označi z oznako sledenje, Odstrani sledenje (n) pa jih izbriše vse naenkrat. Poleg vsakega parametra utm_* prepozna še več kot 20 drugih, na primer ttclid (TikTok), mc_cid (Mailchimp) in _hsenc (HubSpot). Parametri, ki jih stran potrebuje, ostanejo: v povezavi trgovine iz Preizkusi primer Odstrani sledenje (4) odstrani utm_source, utm_medium, utm_campaign in fbclid, obdrži pa q, size, return in fragment #reviews.

Povezavo, ki bo šla v kodo QR, se tukaj najprej splača očistiti. Brez parametrov sledenja je krajša, krajša povezava pa da manj gosto kodo, ki jo je lažje skenirati.

Kaj je odstotkovno kodiranje in kako znaki postanejo %XX

Odstotkovno kodiranje (v angleščini), imenovano tudi kodiranje URL, zapiše znak kot %, ki mu sledita dve šestnajstiški števki. URL sme vsebovati le omejen nabor znakov ASCII, nekateri med njimi pa imajo posebno vlogo: ? začne poizvedbo, & loči parametre, # začne fragment. RFC 3986 jih imenuje rezervirani znaki (: / ? # [ ] @ in ! $ & ' ( ) * + , ; =). Črke, števke in - . _ ~ so nerezervirani in jih nikoli ni treba kodirati. Vse drugo in vsak rezervirani znak, uporabljen kot navaden podatek, se kodira.

Znaki zunaj ASCII se najprej pretvorijo v bajte UTF-8 in vsak bajt dobi svoj %XX:

  • é je U+00E9, ki ga UTF-8 shrani kot dva bajta C3 A9, zato postane %C3%A9.
  • € je U+20AC, trije bajti: %E2%82%AC.
  • Emoji, na primer U+1F600 (nasmejan obraz), zavzame štiri bajte: %F0%9F%98%80.

%c3%a9 in %C3%A9 pomenita isto, a RFC 3986 priporoča velike črke, kar orodje tudi piše. Tabela odstotkovnega kodiranja znakov, na katere naletite najpogosteje:

ZnakKodiranoZnakKodirano
presledek%20+%2B
!%21,%2C
"%22/%2F
#%23:%3A
$%24;%3B
%%25=%3D
&%26?%3F
'%27@%40
(%28[%5B
)%29]%5D
*%2Aprelom vrstice%0A

Kodiranje URL v JavaScriptu, Pythonu in PHP

Vsak jezik ima za to svoje funkcije, razlikujejo pa se predvsem v obravnavi presledkov, poševnic in znakov ! ' ( ) * ~.

JavaScript ima encodeURIComponent (v angleščini) za vrednost, encodeURI za cel naslov in URLSearchParams za kodiranje obrazcev:

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 plusa ne spremeni v presledek, pri neveljavnem zaporedju, kot je 100%, pa sproži napako URIError.

V Pythonu so funkcije v urllib.parse. quote privzeto ohrani / (safe='/'), sicer pa kodira vse razen nerezerviranih znakov po RFC 3986. quote_plus zapiše presledke kot + in kodira tudi /:

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 kodira tako kot obrazec HTML in presledek zapiše kot +, rawurlencode pa sledi RFC 3986 in zapiš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 da enak rezultat kot Strogi RFC 3986. urlencode ustreza načinu Podatki obrazca, razen pri *, ki ga kodira kot %2A.

Pogosta vprašanja

Ali naj se presledek kodira kot %20 ali +?

%20 deluje povsod v URL. + pomeni presledek samo v nizu poizvedbe in v podatkih obrazca, torej v obliki, ki jo pošiljajo obrazci HTML. V poti je + navaden plus, zato /a+b ostane /a+b. Kadar vrednost poizvedbe potrebuje pravi plus, ga zapišite kot %2B. Način Podatki obrazca zapiše presledke kot +, ostali trije načini pa kot %20.

Kaj pomenijo %20, %2F in %3D v URL?

To so kodirani znaki: %20 je presledek, %2F poševnica in %3D enačaj. Druga zaporedja, ki jih pogosto vidite, so %26 (&), %3F (?), %3A (:), %2C (vejica) in %27 (opuščaj). Dve števki sta koda znaka v šestnajstiškem zapisu. Črke z diakritičnimi znaki in drugi znaki zunaj ASCII zavzamejo dva do štiri takšne pare, na primer %C3%A9 za é. Celoten niz prilepite v dekodirnik in ga preberite.

Kakšna je razlika med encodeURI in encodeURIComponent?

encodeURI je namenjen celemu naslovu in pusti znake, ki ga strukturirajo, kot so : / ? # & =. encodeURIComponent je namenjen enemu delu, vrednosti parametra ali segmentu poti, in kodira tudi te znake, zato https://example.com/?a=1&b=2 postane https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. V tem orodju Vrednost parametra ustreza encodeURIComponent, Cel URL pa je podoben encodeURI, vendar obdrži obstoječa zaporedja, kot je %20, namesto da bi jih spremenil v %2520.

Kako odstranim parametre UTM iz URL?

Povezavo prilepite v zavihek Razčleni in uredi URL in pritisnite Odstrani sledenje (n). Naenkrat izbriše vse oznake utm_* in identifikatorje klikov, kot sta fbclid in gclid. Nato pritisnite Kopiraj URL. Če želite odstraniti le nekatere, uporabite Odstrani parameter pri vrsticah, ki jih ne želite.

Ali je kodiranje URL isto kot šifriranje ali Base64?

Ne. Kodiranje URL ničesar ne skrije: vsakdo lahko caf%C3%A9 dekodira nazaj v café, zato nikoli ne ščiti gesla ali žetona. Znake le naredi varne za uporabo v naslovu. Base64 je drugo kodiranje, ki poljubne podatke, tudi binarne datoteke, pretvori v niz 64 znakov. Niz Base64 v URL še vedno potrebuje kodirane +, / in =, razen če uporabite različico, varno za URL, ki jo zna ustvariti kodirnik in dekodirnik Base64.

Ali se prilepljeni URL naložijo ali shranijo?

Ne. Kodiranje, dekodiranje in razčlenjevanje potekajo v vašem brskalniku in nič, kar prilepite, se ne pošlje strežniku. To je pomembno, ker URL pogosto nosijo dostopne žetone, ID-je sej ali kode za ponastavitev gesla. Brskalnik si zapomni samo izbrani zavihek in možnosti, nikoli besedil. Naslov naloži le Odpri, ki ga odpre v novem zavihku, tako kot klik na povezavo.

Več orodij za programerje je v kategoriji Razvijalci, orodja, ki eno obliko pretvorijo v drugo, pa so zbrana med Pretvorniki. Če želite ugotoviti, v čem se razlikujeta dva dolga URL, na primer delujoč in neuspešen klic API, ju prilepite v orodje za primerjavo besedil in primerjajte po znakih.

Cenil bi, če bi te strani delili s prijatelji, jih dodali med zaznamke ali nanje povezali. Hvala! 🙏