URL koder i dekoder

Acrafto Team Programeri
Ažurirano
Kodiraj kao

Za jednu vrijednost upita ili segment putanje. Kodira sve osim slova, cifara i - _ . ! ~ * ' ( ), isto kao encodeURIComponent.

Rezultat

Sve radi u vašem pregledniku i ništa što zalijepite se ne šalje na server. To je važno, jer URL-ovi često sadrže tokene i ID-ove sesija.

URL encode decode online dok kucate: alat pretvara razmake, slova s dijakriticima i simbole poput & ili ? u procentualno kodirane sekvence kao što je %20, a njih vraća u čitljiv tekst. Druga kartica je analizator URL-a. On razdvaja svaku adresu na protokol, host, putanju i parametre upita koje možete mijenjati, isključivati ili očistiti od oznaka za praćenje, a ispravno kodiran URL upisuje nazad umjesto vas. Sve se događa u vašem pregledniku.

URL encode decode: kako kodirati i dekodirati tekst

  1. Upišite ili zalijepite tekst u polje na kartici Kodiraj / Dekodiraj. Rezultat se osvježava sa svakim pritiskom na tipku.
  2. Odaberite Smjer. Kodiraj pravi tekst sigurnim za URL, a Dekodiraj vraća caf%C3%A9%20au%20lait u café au lait. Zalijepite li tekst sa sekvencama poput %20 u prazno polje, alat sam prelazi na Dekodiraj (Kodiraj ga umjesto toga vraća nazad). Običan tekst koji treba kodirati, zalijepljen u načinu Dekodiraj, na isti način prebacuje na Kodiraj, uz Dekodiraj ga umjesto toga.
  3. Pri kodiranju pod Kodiraj kao odaberite šta tekst predstavlja (pogledajte sljedeći odjeljak). Zadana opcija, Vrijednost parametra, odgovara jednoj vrijednosti upita.
  4. Kopiraj stavlja rezultat u međuspremnik. Zamijeni premješta rezultat u ulaz i mijenja smjer. To je brza provjera u krug: dekodiranje upravo kodiranog teksta mora vratiti vaš original.

Svaki znak koji je alat promijenio istaknut je u rezultatu. Zadržite pokazivač iznad njega da vidite znak, njegovu Unicode tačku i bajtove, na primjer é U+00E9 %C3%A9. Ispod polja vidite broj Znakova, UTF-8 bajtova i Kodiranih znakova (ili Dekodiranih znakova). Isprobaj primjer učitava rečenicu Cijena: 50 % popusta, čaj & ćevapi? Da!, koja ima 39 znakova, ali 41 UTF-8 bajt, jer svako slovo s dijakritikom zauzima dva bajta.

Pri kodiranju Svaki red posebno kodira svaki red za sebe i čuva prelome redova, što odgovara popisu vrijednosti ili linkova. Bez te opcije i prelom reda se kodira i postaje %0A. Kada je tekst URL s parametrima, alat nudi Razdvoji na dijelove, što otvara adresu na kartici analizatora.

Kako kodirati parametar URL-a, cijeli URL ili podatke obrasca

Nije svaki znak potrebno svugdje kodirati. Kosa crta razdvaja foldere u putanji, ali je običan podatak unutar vrijednosti parametra, pa ispravan rezultat zavisi od toga šta kodirate. Kodiraj kao nudi četiri načina:

  • Vrijednost parametra radi kao JavaScriptov encodeURIComponent i odgovara jednoj vrijednosti upita ili segmentu putanje. Kodira sve osim slova, cifara i - _ . ! ~ * ' ( ), pa &, =, / ili ? unutar vrijednosti ne mogu pokvariti URL. Kodiranjem café & crème dobije se caf%C3%A9%20%26%20cr%C3%A8me, spremno za upotrebu iza q=.
  • Cijeli URL je za kompletnu adresu koju samo treba urediti. Kodira razmake, znakove koji nisu ASCII, kontrolne znakove, obrnuti apostrof (backtick) i " < > \ ^ { | }, a zadržava sve što URL-u daje strukturu: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Tako https://example.com/search?q=café au lait&lang=fr postaje https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Već kodirane sekvence ostaju kakve jesu, a usamljeni % postaje %25. Tu se razlikuje od JavaScriptovog encodeURI, koji postojeći %20 pretvara u %2520 i kodira uglaste zagrade IPv6 adrese poput http://[2001:db8::1]:8080/.
  • Podaci obrasca prate format application/x-www-form-urlencoded (na engleskom) koji proizvode HTML obrasci i URLSearchParams. Razmak postaje +, a nekodirani ostaju samo slova, cifre i * - . _, pa se kodiraju i ! ' ( ) ~.
  • Strogi RFC 3986 ostavlja nekodirane samo nerezervirane znakove standarda RFC 3986 (na engleskom): slova, cifre i - . _ ~. OAuth 1.0 (RFC 5849) i AWS Signature Version 4 zahtijevaju upravo ovaj oblik, jer se potpis podudara samo ako obje strane ! ili * kodiraju na isti način.

Isti znakovi u svakom načinu:

ZnakVrijednost parametraCijeli URLPodaci obrascaStrogi RFC 3986
razmak%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Tekst se uvijek kodira kao UTF-8, a heksadecimalne cifre su uvijek velika slova. Ako ulaz već sadrži sekvence poput %20, napomena to javlja i nudi Dekodiraj ga umjesto toga, da tekst greškom ne kodirate dvaput.

Da biste JSON proslijedili u parametru upita, minimizirajte ga u JSON formateru i kodirajte kao Vrijednost parametra: {"id":7,"tags":["a","b"]} postaje %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Radi i obrnuto: dekodirajte parametar ovdje, a zatim ga formatirajte tamo.

URL decode problemi: znakovi plus, %2520 i pokvarene sekvence

Dekodiranje obično jednostavno radi, ali četiri situacije zbunjuju ljude. Alat svaku od njih obrađuje umjesto da stane s greškom:

  • Znak plus u podacima obrasca i većini nizova upita znači razmak. Dekodiraj + kao razmak je uključeno prema zadanim postavkama, pa se caf%C3%A9+au+lait dekodira u café au lait. U cijelom URL-u kao razmaci se računaju samo plusevi iza ?, jer je plus u putanji običan znak. Isključite opciju kada se plus misli doslovno. Plus koji je kodiran kao %2B uvijek ostaje plus.
  • Dvostruko kodiranje nastaje kada dva sloja koda kodiraju istu vrijednost, na što RFC 3986 izričito upozorava. Svaki % postaje %25, pa se razmak iz %20 pretvara u %2520. Ako dekodirani rezultat i dalje sadrži sekvence poput %20, alat kaže da je tekst vjerovatno kodiran dvaput i nudi Dekodiraj ponovo.
  • Nevažeća sekvenca, % iza kojeg ne slijede dvije heksadecimalne cifre, kao u 100% ili %G1, uzrokuje da JavaScriptov decodeURIComponent baci URIError. Ovdje se takve sekvence ostavljaju kakve jesu, označavaju crveno i broje, a ostatak teksta se dekodira.
  • Stari Latin-1 linkovi potiču iz vremena prije UTF-8, kada su neke stranice é kodirale kao jedan bajt %E9. caf%E9 nije ispravan UTF-8, pa decodeURIComponent ne uspijeva, a Pythonov unquote vraća caf iza kojeg slijedi zamjenski znak U+FFFD. Alat takve bajtove čita kao Windows-1252, dekodira caf%E9 u café i dodaje napomenu o tome.

Kontrolni znakovi u dekodiranom tekstu, poput tabulatora ili nul-bajta, prikazuju se kao vidljivi simboli ␉ i ␀, ali Kopiraj kopira pravi tekst.

Analizator URL-a: razdvojite URL i uredite parametre upita

Zalijepite adresu u polje URL na kartici Analiza i izmjena URL-a i ona se razdvaja na Protokol, Host, Port, Putanja i Fragment, plus Korisničko ime i Lozinka kada ih URL sadrži. Vrijednosti se prikazuju dekodirane, pa je ova kartica ujedno najbrži način da dekodirate parametre URL-a: čitate ženske čizme umjesto %C5%BEenske+%C4%8Dizme. Uređivanje radi u oba smjera, kao adresna traka i tabela parametara u Postmanu. Promijenite polje i URL se odmah ispravno kodiran prepisuje; promijenite URL i svi dijelovi se ponovo čitaju. Dijelovi koje ne dirate ostaju tačno onakvi kakvi su bili, znak po znak.

Tabela Parametri upita navodi svaki parametar s kolonama Naziv i Vrijednost. Isključite Uključi u URL da parametar izostavite bez brisanja, što pomaže kada tražite onaj koji kvari zahtjev. Dodaj parametar, Ukloni parametar i Sortiraj A do Z rade ono što piše. Ponovljeni nazivi poput tag=a&tag=b i nazivi bez vrijednosti poput ?debug se zadržavaju. Razmaci u parametrima određuje pišu li se razmaci kao %20 ili +; prema zadanim postavkama prati URL koji ste zalijepili.

Linkovi za prijavu i plaćanje često nose drugi URL unutar parametra, kodiran tako da se njegovi ? i & ne miješaju s vanjskim:

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

Vrijednost koja je i sama URL, tipično u redirect_uri, return, url ili next, dobija dugme Uredi ugniježdeni URL. Unutarnja adresa https://app.example.com/callback?tab=2 otvara se kao zaseban nivo sa svojim dijelovima i parametrima, trag navigacije (breadcrumb, Glavni URL › redirect_uri) vodi nazad, a svaka izmjena se kodirana upisuje u vanjski URL. Kopiraj glavni URL kopira rezultat. Ovo radi i nekoliko nivoa duboko.

Kada dio iza # izgleda kao parametri, kao #access_token=...&state=... u OAuth implicit toku ili #/search?q=shoes u rutama jednostraničnih aplikacija, druga tabela, Parametri fragmenta, i njih navodi.

Analizator ukazuje i na probleme: URL bez protokola, koji preglednici tretiraju kao relativni link; port izvan raspona od 0 do 65535; i znakove koje je potrebno kodirati, poput razmaka, slova s dijakriticima, " ili <, što Kodiraj ih popravlja jednim korakom. Tekst bez adrese, kao a=1&b=2, čita se kao niz upita. Za internacionaliziranu domenu (na engleskom) alat prikazuje Punycode oblik koji koriste DNS i preglednici, pa münchen.de postaje xn--mnchen-3ya.de, a domena koja počinje s xn-- dobija svoj čitljiv oblik.

Kopiraj URL kopira gotovu adresu, Otvori je otvara u novoj kartici (samo http i https linkovi), a Kopiraj kao JSON daje parametre kao JSON objekat, s ponovljenim nazivima skupljenim u niz.

Kako ukloniti UTM i druge parametre praćenja iz URL-a

Linkovi iz newslettera, oglasa i društvenih mreža nose parametre koji stranici samo govore odakle je posjetilac došao. UTM parametri (na engleskom) utm_source, utm_medium, utm_campaign, utm_term i utm_content potiču od Urchina, prethodnika Google Analyticsa. ID-ove klikova poput fbclid (Facebook), gclid (Google Ads) i msclkid (Microsoft Advertising) dodaju same platforme.

Analizator ih označava oznakom praćenje, a Ukloni praćenje (n) briše sve odjednom. Pored svakog utm_* parametra prepoznaje još više od 20 drugih, kao ttclid (TikTok), mc_cid (Mailchimp) i _hsenc (HubSpot). Parametri koje stranica treba ostaju na mjestu: u linku trgovine iz Isprobaj primjer, Ukloni praćenje (4) uklanja utm_source, utm_medium, utm_campaign i fbclid, a zadržava q, size, return i fragment #reviews.

Link koji ide u QR kod vrijedi prvo ovdje očistiti. Bez parametara praćenja je kraći, a kraći link daje manje gust kod koji se lakše skenira.

Šta je procentualno kodiranje i kako znakovi postaju %XX

Procentualno kodiranje (na engleskom, Percent-encoding), zvano i URL kodiranje, piše znak kao % iza kojeg slijede dvije heksadecimalne cifre. URL smije sadržavati samo ograničen skup ASCII znakova, a neki od njih imaju zadatak: ? počinje upit, & razdvaja parametre, # počinje fragment. RFC 3986 ih naziva rezerviranim znakovima (: / ? # [ ] @ i ! $ & ' ( ) * + , ; =). Slova, cifre i - . _ ~ su nerezervirani i nikad ih nije potrebno kodirati. Sve ostalo, kao i svaki rezervirani znak upotrijebljen kao običan podatak, kodira se.

Znakovi izvan ASCII-ja prvo se pretvaraju u UTF-8 bajtove, a svaki bajt dobija vlastiti %XX:

  • é je U+00E9, što UTF-8 pohranjuje kao dva bajta C3 A9, pa postaje %C3%A9.
  • € je U+20AC, tri bajta: %E2%82%AC.
  • Emoji poput U+1F600 (nasmijano lice) zauzima četiri bajta: %F0%9F%98%80.

%c3%a9 i %C3%A9 znače isto, ali RFC 3986 preporučuje velika slova, što alat i piše. Tabela procentualnog kodiranja znakova koje najčešće srećete:

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

URL encode u JavaScriptu, Pythonu i PHP-u

Svaki jezik ima funkcije za ovo, a razlikuju se uglavnom po tome kako tretiraju razmake, kose crte i ! ' ( ) * ~.

JavaScript ima encodeURIComponent (na engleskom) za vrijednost, encodeURI za cijelu adresu i URLSearchParams za kodiranje obrasca:

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 ne pretvara + u razmak, a na nevažeću sekvencu poput 100% baca URIError.

U Pythonu funkcije se nalaze u urllib.parse. quote prema zadanim postavkama zadržava / (safe='/'), a inače kodira sve osim nerezerviranih znakova RFC 3986. quote_plus piše razmake kao + i kodira i /:

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'

U PHP-u urlencode kodira kao HTML obrazac i razmak piše kao +, dok rawurlencode slijedi RFC 3986 i piš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 daje isti rezultat kao Strogi RFC 3986. urlencode odgovara načinu Podaci obrasca, osim za *, koji kodira kao %2A.

Često postavljana pitanja

Treba li razmak kodirati kao %20 ili +?

%20 radi svugdje u URL-u. + znači razmak samo u nizu upita i u podacima obrasca, formatu koji šalju HTML obrasci. U putanji je + običan znak plus, pa /a+b ostaje /a+b. Kada vrijednost upita treba pravi plus, napišite ga kao %2B. U alatu Podaci obrasca pišu razmake kao +, a ostala tri načina kao %20.

Šta znače %20, %2F i %3D u URL-u?

To su kodirani znakovi: %20 je razmak, %2F kosa crta, a %3D znak jednakosti. Druge koje često viđate su %26 (&), %3F (?), %3A (:), %2C (zarez) i %27 (apostrof). Dvije cifre su kôd znaka u heksadecimalnom zapisu. Slova s dijakriticima i drugi znakovi izvan ASCII-ja zauzimaju od dva do četiri takva para, kao %C3%A9 za é. Zalijepite cijeli niz u dekoder da ga pročitate.

Koja je razlika između encodeURI i encodeURIComponent?

encodeURI je namijenjen cijeloj adresi i ostavlja znakove koji joj daju strukturu, poput : / ? # & =. encodeURIComponent je namijenjen jednom dijelu, vrijednosti parametra ili segmentu putanje, i kodira i te znakove, pa https://example.com/?a=1&b=2 postaje https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. U ovom alatu Vrijednost parametra odgovara funkciji encodeURIComponent, a Cijeli URL je kao encodeURI, ali zadržava postojeće sekvence poput %20 umjesto da ih pretvara u %2520.

Kako ukloniti UTM parametre iz URL-a?

Zalijepite link na karticu Analiza i izmjena URL-a i pritisnite Ukloni praćenje (n). Time se odjednom brišu sve utm_* oznake i ID-ovi klikova poput fbclid i gclid. Zatim pritisnite Kopiraj URL. Ako želite izbaciti samo neke, upotrijebite Ukloni parametar na redovima koje ne želite.

Je li URL kodiranje isto što i šifriranje ili Base64?

Ne. URL kodiranje ništa ne skriva: svako može caf%C3%A9 dekodirati nazad u café, pa nikad ne štiti lozinku ni token. Ono samo čini znakove sigurnim za upotrebu u adresi. Base64 je drugačije kodiranje koje bilo koje podatke, uključujući binarne datoteke, pretvara u niz od 64 znaka. Base64 niz u URL-u i dalje treba kodirane +, / i =, osim ako koristite URL-siguran oblik, koji može napraviti Base64 koder i dekoder.

Šalju li se ili pohranjuju URL-ovi koje zalijepim?

Ne. Kodiranje, dekodiranje i analiza rade u vašem pregledniku i ništa što zalijepite ne šalje se na server. To je važno, jer URL-ovi često nose pristupne tokene, ID-ove sesija ili kodove za poništavanje lozinke. Preglednik pamti samo odabranu karticu i opcije, nikad tekstove. Jedino što učitava adresu je Otvori, koje je otvara u novoj kartici baš kao klik na link.

Više alata za programere nalazi se u kategoriji Programeri, a alati koji jedan format pretvaraju u drugi skupljeni su pod Konverteri. Da biste pronašli šta se razlikuje između dva duga URL-a, na primjer ispravnog i neispravnog API poziva, zalijepite ih u alat za poređenje tekstova i uporedite po znakovima.

Cijenio bih ako biste podijelili ove stranice s prijateljima, spremili ih u favorite ili linkali na njih. Hvala! 🙏