Utilia

Kodiranje in dekodiranje URL

Brezplačno kodiranje in dekodiranje URL. Odstotno kodiraj parametre poizvedbe ali celotne URL, dekodiraj %XX in obravnavaj + kot presledek v brskalniku.

Način

Kako uporabljati kodiranje in dekodiranje URL

  1. Izberi Kodiraj, da besedilo pretvoriš v obliko, varno za URL, ali Dekodiraj, da odstotno kodirano besedilo spremeniš nazaj v berljive znake.
  2. Pri kodiranju izberi način: Sestavni del za posamezno vrednost (na primer parameter poizvedbe ali odsek poti) ali Celoten URL, da kodiraš celoten naslov in ohraniš njegovo zgradbo.
  3. Pri dekodiranju podatkov iz obrazca HTML ali niza poizvedbe vklopi Obravnavaj + kot presledek, da znaki + postanejo presledki.
  4. Prilepi besedilo in kopiraj rezultat. Če je odstotno zaporedje napačno, orodje sporoči napako, namesto da bi ugibalo.

Kaj je kodiranje URL?

URL lahko vsebujejo samo omejen nabor znakov ASCII. Nekateri znaki, kot so /, ?, #, & in =, so rezervirani, ker ločujejo dele naslova: pot, niz poizvedbe in fragment. Drugi, kot so presledki, narekovaji, črke s strešicami ali emoji, preprosto niso dovoljeni. Kodiranje URL, imenovano tudi odstotno kodiranje, reši obe težavi tako, da vsak problematičen bajt zamenja z %, ki mu sledita dve šestnajstiški števki.

Besedilo se najprej pretvori v bajte UTF-8 in vsak bajt se kodira posebej. Presledek postane %20, znak & postane %26, č (dva bajta v UTF-8) postane %C4%8D, emoji 😀 (štirje bajti) pa %F0%9F%98%80. Nerezervirani znaki, torej črke, števke in - _ . ~, ne potrebujejo kodiranja.

Način sestavnega dela ali celotnega URL

Izbira pravega načina je najpomembnejša odločitev, napačna pa je klasičen vir napak.

Način sestavnega dela deluje kot encodeURIComponent v JavaScriptu. Kodira vsak rezervirani znak, zato je rezultat mogoče varno vstaviti v en del URL. Uporabi ga za vrednosti parametrov poizvedbe, odseke poti ali karkoli, kar je vnesel uporabnik. Na primer iskalni izraz rock & roll postane rock%20%26%20roll. Če znaka & ne bi kodiral, bi strežnik roll prebral kot začetek novega parametra.

Način celotnega URL deluje kot encodeURI. Predpostavlja, da je vnos že celoten naslov, in ohrani znake, ki mu dajejo zgradbo, kot so : / ? # & in =, kodira pa presledke in znake, ki niso ASCII. Uporabi ga za čiščenje naslova, kot je https://example.com/kavarna šmarje?q=čaj, v https://example.com/kavarna%20%C5%A1marje?q=%C4%8Daj. Ne uporabljaj ga za posamezne vrednosti: & znotraj vrednosti bi ostal nekodiran in pokvaril niz poizvedbe.

Dobro pravilo: URL sestavljaj iz delov, vsako vrednost kodiraj v načinu sestavnega dela, način celotnega URL pa uporabi samo za naslove, ki jih prejmeš že sestavljene.

Znak + in kodiranje obrazca

Obrazci HTML, poslani z application/x-www-form-urlencoded, presledke kodirajo kot + namesto %20. Zato so iskalni URL pogosto videti kot ?q=hello+world. Standardno odstotno dekodiranje pusti + nespremenjen, ker je plus v poti samo plus. Ko dekodiraš niz poizvedbe ali podatke obrazca, vklopi Obravnavaj + kot presledek, da dobiš hello world. Pusti ga izklopljenega za poti in za vrednosti, kjer je dobesedni + pomemben, kot so telefonske številke ali podatki Base64. Pravi znak plus se v podatkih obrazca pošlje kot %2B, zato se v vsakem primeru pravilno dekodira.

Zasebnost

Kodiranje in dekodiranje potekata povsem v tvojem brskalniku. Nič, kar prilepiš, vključno z URL, ki lahko vsebujejo žetone, ID sej ali osebne podatke, se ne pošlje na strežnik ali shrani.

Pogosta vprašanja

Zakaj dekodiranje ne uspe z napako o napačnem kodiranju?

Za % morata slediti natanko dve šestnajstiški števki, nastali bajti pa morajo tvoriti veljaven UTF-8. Nizov, kot so 100%, %G1 ali okrnjeno zaporedje, kot je %E2%82, ni mogoče zanesljivo dekodirati, zato orodje sporoči težavo, namesto da bi ustvarilo napačno besedilo. Če želiš vključiti dobesedni znak odstotka, ga kodiraj kot %25.

Kakšna je razlika med %20 in +?

Oba lahko predstavljata presledek, vendar v različnih okoliščinah. %20 je veljaven povsod v URL. + pomeni presledek samo v nizih poizvedbe, kodiranih kot obrazec; drugje je dobesedni znak plus.

Ali naj celoten URL kodiram v načinu sestavnega dela?

Samo če je celoten URL sam vrednost znotraj drugega URL, na primer parameter redirect=. V tem primeru je način sestavnega dela povsem pravilen: https://a.com/?x=1 postane https%3A%2F%2Fa.com%2F%3Fx%3D1.

Zakaj je moje besedilo kodirano dvakrat?

Dvojno kodiranje nastane, ko se že kodirano besedilo kodira znova in %20 postane %2520. Dekodiraj enkrat za preverjanje in poskrbi, da se vsaka vrednost kodira šele v trenutku vstavljanja v URL.

Ali kodiranje URL podatke skrije ali zaščiti?

Ne. Odstotno kodiranje je popolnoma povratno in ne zagotavlja varnosti. Občutljive vrednosti v URL lahko končajo v zgodovini brskalnika in dnevnikih strežnika, zato skrivnosti sploh ne dajaj v URL.