URL koder i dekoder
Za jednu vrijednost upita ili dio putanje. Kodira sve osim slova, znamenki i - _ . ! ~ * ' ( ), jednako kao encodeURIComponent.
Zalijepite URL iznad. Njegovi dijelovi i parametri pojavit će se ovdje, spremni za uređivanje.
Parametri upita
Ovaj URL nema parametara upita.
Parametri fragmenta
Sve radi u vašem pregledniku i ništa što zalijepite ne šalje se na poslužitelj. To je važno jer URL-ovi često sadrže tokene i ID-ove sesija.
URL encode i decode teksta online dok tipkate: alat razmake, slova s kvačicama i simbole poput & ili ? pretvara u postotno kodirane nizove, na primjer %20, i vraća ih u čitljiv tekst. Druga kartica je URL parser. Rastavlja bilo koju adresu na protokol, host, putanju i parametre upita koje možete uređivati, isključiti ili očistiti od oznaka za praćenje, a ispravno kodirani URL upisuje natrag umjesto vas. Sve se događa u vašem pregledniku.
Kako napraviti URL encode i decode teksta
- Upišite ili zalijepite tekst u polje na kartici Kodiranje / dekodiranje. Rezultat se ažurira sa svakim pritiskom na tipku.
- Odaberite Smjer. Kodiraj čini tekst sigurnim za URL, Dekodiraj vraća
caf%C3%A9%20au%20laitucafé au lait. Zalijepite li tekst s nizovima poput%20u prazno polje, alat sam prelazi na Dekodiraj (Kodiraj umjesto toga vraća natrag). Obični tekst koji treba kodirati, zalijepljen u načinu Dekodiraj, na isti način prebacuje na Kodiraj, uz gumb Dekodiraj umjesto toga. - Pri kodiranju pod Kodiraj kao odaberite što taj tekst jest (vidi sljedeći odjeljak). Zadana opcija, Vrijednost parametra, ispravna je za jednu vrijednost upita.
- Kopiraj stavlja rezultat u međuspremnik. Zamijeni prebacuje rezultat u ulaz i obrće smjer. To je brza provjera u oba smjera: dekodiranje upravo kodiranog teksta mora vratiti vaš izvorni tekst.
Svaki znak koji je alat promijenio istaknut je u rezultatu. Zadržite pokazivač iznad njega i vidjet ćete znak, njegovu Unicode kodnu točku i bajtove, na primjer é U+00E9 %C3%A9. Ispod polja vidite broj Znakova, UTF-8 bajtova i Kodiranih znakova (odnosno Dekodiranih znakova). Isprobaj primjer učitava rečenicu Cijena: 50 % popusta, čaj & šljivovica? Da!, koja ima 43 znaka, ali 45 UTF-8 bajtova, jer svako slovo s kvačicom zauzima dva bajta.
Pri kodiranju Svaki redak zasebno kodira svaki redak za sebe i zadržava prijelome redaka, što odgovara popisu vrijednosti ili poveznica. Bez te opcije i prijelom retka se kodira i postaje %0A. Kada je tekst URL s parametrima, alat nudi Rastavi na dijelove, što adresu otvara na kartici parsera.
Kodiranje parametra URL-a, cijelog URL-a ili podataka obrasca
Ne mora se svaki znak posvuda kodirati. Kosa crta odvaja mape u putanji, ali je unutar vrijednosti parametra obični podatak, pa ispravan rezultat ovisi o tome što kodirate. Kodiraj kao nudi četiri načina:
- Vrijednost parametra radi kao JavaScriptov
encodeURIComponenti odgovara jednoj vrijednosti upita ili dijelu putanje. Kodira sve osim slova, znamenki i- _ . ! ~ * ' ( ), pa&,=,/ili?unutar vrijednosti ne mogu pokvariti URL. Kodiranjem tekstacafé & crèmedobivatecaf%C3%A9%20%26%20cr%C3%A8me, spremno za unos izaq=. - Cijeli URL služi za potpunu adresu koju treba samo urediti. Kodira razmake, znakove izvan ASCII-ja, kontrolne znakove, obrnuti apostrof i
" < > \ ^ { | }, a zadržava sve što URL-u daje strukturu:: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Takohttps://example.com/search?q=café au lait&lang=frpostajehttps://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Već kodirani nizovi ostaju kakvi jesu, a usamljeni%postaje%25. Tu se razlikuje od JavaScriptovaencodeURI, koji postojeći%20pretvara u%2520i kodira uglate zagrade IPv6 adrese poputhttp://[2001:db8::1]:8080/. - Podaci obrasca slijedi format application/x-www-form-urlencoded (na engleskom) koji stvaraju HTML obrasci i
URLSearchParams. Razmak postaje+, a nekodirani ostaju samo slova, znamenke i* - . _, pa se kodiraju i! ' ( ) ~. - Strogi RFC 3986 ostavlja nekodirane samo nerezervirane znakove iz RFC-a 3986 (na engleskom): slova, znamenke i
- . _ ~. OAuth 1.0 (RFC 5849) i AWS Signature Version 4 traže upravo taj oblik, jer se potpis podudara samo ako obje strane!ili*kodiraju jednako.
Isti znakovi u svakom načinu:
| Znak | Vrijednost parametra | Cijeli URL | Podaci obrasca | Strogi 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 znamenke uvijek su velika slova. Ako ulaz već sadrži nizove poput %20, napomena to javlja i nudi Dekodiraj umjesto toga, kako tekst slučajno ne biste kodirali dvaput.
Za prosljeđivanje JSON-a u parametru upita smanjite ga u JSON formatteru 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: parametar dekodirajte ovdje, a zatim ga formatirajte tamo.
Problemi pri URL decodeu: plusevi, %2520 i neispravni nizovi
Dekodiranje obično jednostavno radi, ali četiri situacije zbunjuju ljude. Alat ih sve rješava umjesto da se zaustave s greškom:
- Znak plus u podacima obrasca i većini nizova upita znači razmak. Dekodiraj + kao razmak zadano je uključeno, pa se
caf%C3%A9+au+laitdekodira ucafé au lait. U cijelom URL-u kao razmaci se računaju samo plusevi iza?, jer je u putanji plus običan znak. Isključite opciju kada je plus mišljen doslovno. Plus koji je kodiran kao%2Buvijek 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%20pretvara u%2520. Ako dekodirani rezultat i dalje sadrži nizove poput%20, alat javlja da je tekst vjerojatno kodiran dvaput i nudi Dekodiraj ponovno. - Neispravan niz, odnosno
%iza kojeg ne slijede dvije heksadecimalne znamenke, kao u100%ili%G1, uzrokuje da JavaScriptovdecodeURIComponentbaci URIError. Ovdje se takvi nizovi ostavljaju kakvi jesu, označavaju crveno i broje, a ostatak teksta se dekodira. - Stare Latin-1 poveznice potječu iz vremena prije UTF-8, kada su neke stranice
ékodirale kao jedan bajt%E9.caf%E9nije ispravan UTF-8, padecodeURIComponentne uspijeva, a Pythonovunquotevraćacafiza kojeg slijedi zamjenski znak U+FFFD. Alat te bajtove čita kao Windows-1252, dekodiracaf%E9ucaféi dodaje napomenu o tome.
Kontrolni znakovi u dekodiranom tekstu, poput tabulatora ili nul-bajta, prikazuju se kao vidljivi simboli poput ␉ i ␀, ali Kopiraj kopira stvarni tekst.
URL parser: rastavite adresu i uredite parametre upita
Zalijepite adresu u polje URL na kartici Rastavi i uredi URL i ona se rastavlja na dijelove Protokol, Host, Port, Putanja i Fragment, a uz njih i Korisničko ime te Lozinka ako ih URL sadrži. Vrijednosti su prikazane dekodirane, pa je ta kartica i najbrži način da dekodirate parametre URL-a: čitate ženske tenisice umjesto %C5%BEenske+tenisice. Uređivanje radi u oba smjera, kao adresna traka i tablica parametara u Postmanu. Promijenite polje i URL se odmah prepisuje, ispravno kodiran; promijenite URL i svi se dijelovi ponovno čitaju. Dijelovi koje ne dirate ostaju točno onakvi kakvi su bili, znak po znak.
Tablica Parametri upita navodi svaki parametar sa stupcima Naziv i Vrijednost. Poništite oznaku Uključi u URL da parametar izostavite bez brisanja, što pomaže kada tražite onaj parametar koji kvari zahtjev. Dodaj parametar, Ukloni parametar i Poredaj A do Ž 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 +; zadano slijedi URL koji ste zalijepili.
Poveznice za prijavu i plaćanje često nose drugi URL unutar parametra, kodiran tako da se njegovi ? i & ne miješaju s vanjskima:
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, obično u redirect_uri, return, url ili next, dobiva gumb Uredi unutarnji URL. Unutarnja adresa https://app.example.com/callback?tab=2 otvara se kao zasebna razina sa svojim dijelovima i parametrima, navigacijska staza (Glavni URL › redirect_uri) vodi natrag, a svaka se promjena kodirana upisuje u vanjski URL. Kopiraj glavni URL kopira rezultat. To radi i kroz više razina.
Kada dio iza # izgleda kao parametri, kao #access_token=...&state=... u OAuth implicit toku ili #/search?q=shoes u rutama jednostraničnih aplikacija, i njih navodi druga tablica, Parametri fragmenta.
Parser upozorava i na probleme: URL bez protokola, koji preglednici tretiraju kao relativnu poveznicu; port izvan raspona od 0 do 65535; i znakove koje treba kodirati, poput razmaka, slova s kvačicama, " ili <, što Kodiraj ih ispravlja jednim korakom. Tekst bez adrese, poput 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-- dobiva čitljiv oblik.
Kopiraj URL kopira gotovu adresu, Otvori je otvara u novoj kartici (samo http i https poveznice), a Kopiraj kao JSON daje parametre kao JSON objekt, pri čemu se ponovljeni nazivi skupljaju u polje.
Kako ukloniti UTM i druge parametre praćenja iz URL-a
Poveznice iz newslettera, oglasa i društvenih mreža nose parametre koji stranici samo govore odakle je posjetitelj došao. UTM parametri (na engleskom) utm_source, utm_medium, utm_campaign, utm_term i utm_content potječu od Urchina, preteče Google Analyticsa. ID-ove klikova poput fbclid (Facebook), gclid (Google Ads) i msclkid (Microsoft Advertising) dodaju same platforme.
Parser ih označava oznakom praćenje, a Ukloni praćenje (n) briše ih sve odjednom. Osim svakog parametra utm_* prepoznaje još više od 20 drugih, kao što su ttclid (TikTok), mc_cid (Mailchimp) i _hsenc (HubSpot). Parametri koje stranica treba ostaju na mjestu: u poveznici 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.
Poveznicu koja ide u QR kod isplati se prvo očistiti ovdje. Bez parametara praćenja kraća je, a kraća poveznica daje manje gust kod koji se lakše skenira.
Što je postotno kodiranje i kako znakovi postaju %XX
Percent-encoding (na engleskom), poznato i kao URL encoding, zapisuje znak kao % iza kojeg slijede dvije heksadecimalne znamenke. URL smije sadržavati samo ograničen skup ASCII znakova, a neki od njih imaju zadaću: ? počinje upit, & odvaja parametre, # počinje fragment. RFC 3986 te znakove naziva rezerviranima (: / ? # [ ] @ i ! $ & ' ( ) * + , ; =). Slova, znamenke i - . _ ~ nisu rezervirani i nikad ih ne treba kodirati. Sve ostalo, kao i svaki rezervirani znak upotrijebljen kao obični podatak, kodira se.
Znakovi izvan ASCII-ja najprije se pretvaraju u UTF-8 bajtove, a svaki bajt dobiva 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. Tablica postotnog kodiranja znakova koje najčešće srećete:
| Znak | Kodirano | Znak | Kodirano |
|---|---|---|---|
| razmak | %20 | + | %2B |
! | %21 | , | %2C |
" | %22 | / | %2F |
# | %23 | : | %3A |
$ | %24 | ; | %3B |
% | %25 | = | %3D |
& | %26 | ? | %3F |
' | %27 | @ | %40 |
( | %28 | [ | %5B |
) | %29 | ] | %5D |
* | %2A | prijelom retka | %0A |
URL encoding u JavaScriptu, Pythonu i PHP-u
Svaki jezik ima funkcije za to, a razlikuju se uglavnom po tome kako postupaju s razmacima, kosim crtama i znakovima ! ' ( ) * ~.
JavaScript ima encodeURIComponent (na engleskom) za vrijednost, encodeURI za cijelu adresu i URLSearchParams za kodiranje obrazaca:
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 neispravnom nizu poput 100% baca URIError.
U Pythonu funkcije se nalaze u urllib.parse. quote zadano zadržava / (safe='/'), a inače kodira sve osim nerezerviranih znakova iz 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.
Česta pitanja
Treba li razmak kodirati kao %20 ili +?
%20 radi posvuda 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 znak plus, napišite ga kao %2B. U alatu Podaci obrasca piše razmake kao +, a ostala tri načina kao %20.
Što znače %20, %2F i %3D u URL-u?
To su kodirani znakovi: %20 je razmak, %2F kosa crta, a %3D znak jednakosti. Drugi koje često vidite su %26 (&), %3F (?), %3A (:), %2C (zarez) i %27 (apostrof). Dvije znamenke su kôd znaka u heksadecimalnom zapisu. Slova s kvačicama i drugi znakovi izvan ASCII-ja zauzimaju dva do četiri takva para, poput %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 ne dira znakove koji joj daju strukturu, poput : / ? # & =. encodeURIComponent je namijenjen jednom dijelu, vrijednosti parametra ili dijelu 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 poput encodeURI, ali zadržava postojeće nizove poput %20 umjesto da ih pretvara u %2520.
Kako ukloniti UTM parametre iz URL-a?
Zalijepite poveznicu na karticu Rastavi i uredi URL i pritisnite Ukloni praćenje (n). Odjednom briše svaku oznaku utm_* i ID-ove klikova poput fbclid i gclid. Zatim pritisnite Kopiraj URL. Ako želite izbaciti samo neke od njih, upotrijebite Ukloni parametar na recima koje ne želite.
Je li URL encoding isto što i šifriranje ili Base64?
Ne. URL encoding ništa ne skriva: svatko može caf%C3%A9 dekodirati natrag u café, pa nikad ne štiti lozinku ni token. Samo čini znakove sigurnima za upotrebu u adresi. Base64 je drugo kodiranje koje bilo koje podatke, uključujući binarne datoteke, pretvara u niz od 64 znaka. Base64 niz u URL-u i dalje treba kodirati +, / i =, osim ako upotrijebite inačicu sigurnu za URL, koju može stvoriti Base64 koder i dekoder.
Prenose li se ili pohranjuju URL-ovi koje zalijepim?
Ne. Kodiranje, dekodiranje i rastavljanje rade u vašem pregledniku i ništa što zalijepite ne šalje se na poslužitelj. To je važno jer URL-ovi često nose pristupne tokene, ID-ove sesija ili kodove za ponovno postavljanje lozinke. Preglednik pamti samo odabranu karticu i opcije, nikad tekstove. Jedino što učitava adresu je Otvori, koji je otvara u novoj kartici baš kao klik na poveznicu.
Više alata za programere nalazi se u kategoriji Programeri, a alati koji jedan format pretvaraju u drugi okupljeni su u kategoriji Pretvarači. Da biste pronašli što se razlikuje između dva duga URL-a, na primjer ispravnog i neispravnog poziva API-ja, zalijepite ih u alat za usporedbu teksta i usporedite po znakovima.