URL-enkoder og -dekoder
For én spørringsverdi eller ett stisegment. Koder alt unntatt bokstaver, sifre og - _ . ! ~ * ' ( ), akkurat som encodeURIComponent.
Lim inn en URL ovenfor. Delene og parameterne vises her, klare til redigering.
Spørringsparametere
Denne URL-en har ingen spørringsparametere.
Fragmentparametere
Alt kjører i nettleseren din, og ingenting du limer inn lastes opp. Det er viktig, fordi URL-er ofte inneholder tokener og sesjons-ID-er.
URL encode og decode tekst online mens du skriver: verktøyet gjør mellomrom, bokstaver med aksenter og tegn som & eller ? om til prosentkodede sekvenser som %20, og gjør dem om til lesbar tekst igjen. Den andre fanen er en URL-parser. Den deler opp en hvilken som helst adresse i protokoll, vertsnavn, sti og spørringsparametere som du kan redigere, slå av eller rense for sporingskoder, og skriver den riktig kodede URL-en tilbake for deg. Alt skjer i nettleseren din.
Slik gjør du URL encode og decode av tekst
- Skriv eller lim inn i feltet på fanen Kode / dekode. Resultat oppdateres for hvert tastetrykk.
- Velg Retning. Kode gjør teksten trygg å bruke i en URL, Dekode gjør
caf%C3%A9%20au%20laitom tilcafé au laitigjen. Lim du tekst med sekvenser som%20inn i det tomme feltet, bytter verktøyet til Dekode av seg selv (Kode i stedet bytter tilbake). Vanlig tekst som må kodes, limt inn i modusen Dekode, bytter på samme måte til Kode, med Dekode i stedet. - Når du koder, velger du under Kode som hva slags tekst det er (se neste avsnitt). Standardvalget, Parameterverdi, passer for én enkelt spørringsverdi.
- Kopier legger resultatet på utklippstavlen. Bytt flytter resultatet til inndatafeltet og snur retningen. Det er en rask rundturssjekk: dekoder du det du nettopp har kodet, må du få den opprinnelige teksten tilbake.
Hvert tegn som verktøyet har endret, er markert i resultatet. Hold musepekeren over et tegn for å se tegnet, Unicode-kodepunktet og bytene, for eksempel é U+00E9 %C3%A9. Under feltene ser du antall Tegn, UTF-8-byte og Kodede tegn (eller Dekodede tegn). Prøv et eksempel laster inn setningen Pris: 50 % rabatt på blåbærsyltetøy & brød? Ja!, som har 47 tegn, men 52 byte i UTF-8, fordi hver bokstav med diakritisk tegn (her å, æ og ø) tar to byte.
Når du koder, koder Hver linje for seg hver linje for seg og beholder linjeskiftene, noe som passer for en liste med verdier eller lenker. Uten dette alternativet blir også linjeskiftet kodet og blir til %0A. Når teksten er en URL med parametere, tilbyr verktøyet Del den opp i deler, som åpner adressen i parserfanen.
Kode en URL-parameter, en hel URL eller skjemadata
Ikke alle tegn må kodes overalt. En skråstrek skiller mapper i en sti, men er vanlige data inne i en parameterverdi, så riktig resultat avhenger av hva du koder. Kode som har fire moduser:
- Parameterverdi fungerer som JavaScripts
encodeURIComponentog passer for én spørringsverdi eller ett stisegment. Den koder alt unntatt bokstaver, sifre og- _ . ! ~ * ' ( ), så en&,=,/eller?inne i verdien ikke kan ødelegge URL-en. Koder ducafé & crème, får ducaf%C3%A9%20%26%20cr%C3%A8me, klart til å settes etterq=. - Hel URL er for en komplett adresse som bare trenger å ryddes opp. Den koder mellomrom, tegn utenfor ASCII, kontrolltegn, bakoverrettet apostrof og
" < > \ ^ { | }, og beholder alt som gir en URL struktur:: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Slik blirhttps://example.com/search?q=café au lait&lang=frtilhttps://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Sekvenser som allerede er kodet, blir stående, og et enkeltstående%blir%25. Her skiller den seg fra JavaScriptsencodeURI, som gjør et eksisterende%20om til%2520og koder klammene i en IPv6-adresse somhttp://[2001:db8::1]:8080/. - Skjemadata følger formatet application/x-www-form-urlencoded (på engelsk), som HTML-skjemaer og
URLSearchParamslager. Et mellomrom blir+, og bare bokstaver, sifre og* - . _blir stående ukodet, så! ' ( ) ~kodes også. - Streng RFC 3986 lar bare de ikke-reserverte tegnene i RFC 3986 (på engelsk) stå ukodet: bokstaver, sifre og
- . _ ~. OAuth 1.0 (RFC 5849) og AWS Signature Version 4 krever nøyaktig denne formen, fordi en signatur bare stemmer når begge sider koder!eller*på samme måte.
De samme tegnene i hver modus:
| Tegn | Parameterverdi | Hel URL | Skjemadata | Streng RFC 3986 |
|---|---|---|---|---|
| mellomrom | %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 blir alltid kodet som UTF-8, og heksadesimale sifre skrives alltid med store bokstaver. Hvis inndataene allerede inneholder sekvenser som %20, sier et varsel fra om det og tilbyr Dekode i stedet, slik at du ikke koder teksten to ganger ved en feil.
Skal du sende JSON i en spørringsparameter, minimerer du den i JSON-formatereren og koder den som Parameterverdi: {"id":7,"tags":["a","b"]} blir %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Det virker også andre veien: dekode parameteren her, og formater den der.
URL decode-problemer: plusstegn, %2520 og ødelagte sekvenser
Dekoding fungerer som regel uten problemer, men fire situasjoner lurer mange. Verktøyet håndterer hver av dem i stedet for å stoppe med en feilmelding:
- Et plusstegn står for et mellomrom i skjemadata og de fleste spørringsstrenger. Dekode + som mellomrom er slått på som standard, så
caf%C3%A9+au+laitdekodes tilcafé au lait. I en hel URL teller bare plusstegnene etter?som mellomrom, fordi et pluss i en sti er et helt vanlig tegn. Slå alternativet av når plusstegnet er ment bokstavelig. Et pluss som er kodet som%2B, forblir alltid et plusstegn. - Dobbeltkoding skjer når to lag med kode hver koder den samme verdien, noe RFC 3986 uttrykkelig advarer mot. Hvert
%blir%25, så et mellomrom går fra%20til%2520. Hvis det dekodede resultatet fortsatt inneholder sekvenser som%20, sier verktøyet at teksten trolig er kodet to ganger, og tilbyr Dekode på nytt. - En ugyldig sekvens, et
%som ikke etterfølges av to heksadesimale sifre som i100%eller%G1, får JavaScriptsdecodeURIComponenttil å kaste en URIError. Her blir slike sekvenser stående som de er, markert med rødt og talt opp, og resten av teksten dekodes. - Gamle Latin-1-lenker stammer fra tiden før UTF-8, da noen nettsteder kodet
ésom den ene byten%E9.caf%E9er ikke gyldig UTF-8, sådecodeURIComponentfeiler, og Pythonsunquotegircafetterfulgt av erstatningstegnet U+FFFD. Verktøyet leser slike byte som Windows-1252, dekodercaf%E9tilcaféog legger til en merknad om det.
Kontrolltegn i dekodet tekst, som en tabulator eller en nullbyte, vises som synlige symboler som ␉ og ␀, men Kopier kopierer den virkelige teksten.
URL-parser: del opp en URL og rediger spørringsparameterne
Lim en adresse inn i feltet URL på fanen Analyser og rediger URL, så deles den opp i Protokoll, Vertsnavn, Port, Sti og Fragment, pluss Brukernavn og Passord når URL-en inneholder dem. Verdiene vises dekodet, så fanen er også den raskeste måten å dekode URL-parametere på: du leser løpesko dame i stedet for l%C3%B8pesko+dame. Redigeringen virker begge veier, som adressefeltet og parametertabellen i Postman. Endrer du et felt, skrives URL-en om med en gang, riktig kodet. Endrer du URL-en, leses alle delene på nytt. Deler du ikke rører, blir stående nøyaktig som de var, tegn for tegn.
Tabellen Spørringsparametere viser hver parameter med Navn og Verdi. Fjern haken ved Ta med i URL-en for å utelate en parameter uten å slette den, noe som hjelper når du leter etter parameteren som ødelegger en forespørsel. Legg til parameter, Fjern parameter og Sorter A til Å gjør det de sier. Gjentatte navn som tag=a&tag=b og navn uten verdi som ?debug beholdes. Mellomrom i parametere bestemmer om mellomrom skrives som %20 eller +; som standard følger det URL-en du limte inn.
Innloggings- og betalingslenker har ofte en ny URL inne i en parameter, kodet slik at dens egne ? og & ikke blandes med de ytre:
https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2
En verdi som i seg selv er en URL, typisk i redirect_uri, return, url eller next, får en knapp Rediger URL-en inni. Den indre adressen https://app.example.com/callback?tab=2 åpnes som et eget nivå med egne deler og parametere, en brødsmulesti (Hoved-URL › redirect_uri) leder tilbake, og hver endring kodes tilbake til den ytre URL-en. Kopier hoved-URL kopierer resultatet. Dette fungerer flere nivåer ned.
Når delen etter # ser ut som parametere, som #access_token=...&state=... i OAuth implicit flow eller #/search?q=shoes i rutene til enkeltsideapper, viser en ekstra tabell, Fragmentparametere, dem også.
Parseren peker også på problemer: en URL uten protokoll, som nettlesere behandler som en relativ lenke; en port utenfor 0 til 65535; og tegn som må kodes, som mellomrom, bokstaver med aksenter, " eller <, noe Kode dem ordner i ett steg. Tekst uten adresse, som a=1&b=2, leses som en spørringsstreng. For et internasjonalisert domenenavn viser verktøyet Punycode-formen som DNS og nettlesere bruker, så münchen.de blir xn--mnchen-3ya.de, og et domenenavn som starter med xn--, får sin lesbare form.
Kopier URL kopierer den ferdige adressen, Åpne åpner den i en ny fane (bare http- og https-lenker), og Kopier som JSON gir deg parameterne som et JSON-objekt, der gjentatte navn samles i en liste.
Fjern UTM og andre sporingsparametere fra en URL
Lenker fra nyhetsbrev, annonser og sosiale nettverk har parametere som bare forteller nettstedet hvor den besøkende kom fra. UTM-parameterne (på engelsk) utm_source, utm_medium, utm_campaign, utm_term og utm_content går tilbake til Urchin, forgjengeren til Google Analytics. Klikk-ID-er som fbclid (Facebook), gclid (Google Ads) og msclkid (Microsoft Advertising) legges til av plattformene selv.
Parseren merker disse med taggen sporing, og Fjern sporing (n) sletter alle på en gang. I tillegg til alle utm_*-parametere gjenkjenner den over 20 andre, som ttclid (TikTok), mc_cid (Mailchimp) og _hsenc (HubSpot). Parametere som siden trenger, blir stående: i butikklenken fra Prøv et eksempel fjerner Fjern sporing (4) utm_source, utm_medium, utm_campaign og fbclid, og beholder q, size, return og fragmentet #reviews.
En lenke som skal inn i en QR-kode, er verdt å rense her først. Uten sporingsparametere er den kortere, og en kortere lenke gir en mindre tett kode som er lettere å skanne.
Hva prosentkoding er, og hvordan tegn blir til %XX
Prosentkoding (på engelsk), også kalt URL-koding, skriver et tegn som % etterfulgt av to heksadesimale sifre. En URL kan bare inneholde et begrenset sett med ASCII-tegn, og noen av dem har en oppgave: ? starter spørringen, & skiller parametere, # starter fragmentet. RFC 3986 kaller disse reserverte tegn (: / ? # [ ] @ og ! $ & ' ( ) * + , ; =). Bokstaver, sifre og - . _ ~ er ikke-reserverte og trenger aldri å kodes. Alt annet, og hvert reservert tegn som brukes som vanlige data, blir kodet.
Tegn utenfor ASCII gjøres først om til UTF-8-byte, og hver byte får sin egen %XX:
éer U+00E9, som UTF-8 lagrer som de to bytene C3 A9, så det blir%C3%A9.€er U+20AC, tre byte:%E2%82%AC.- En emoji som U+1F600 (smilende ansikt) tar fire byte:
%F0%9F%98%80.
%c3%a9 og %C3%A9 betyr det samme, men RFC 3986 anbefaler store bokstaver, og det er det verktøyet skriver. En tabell over prosentkoding for tegnene du oftest støter på:
| Tegn | Kodet | Tegn | Kodet |
|---|---|---|---|
| mellomrom | %20 | + | %2B |
! | %21 | , | %2C |
" | %22 | / | %2F |
# | %23 | : | %3A |
$ | %24 | ; | %3B |
% | %25 | = | %3D |
& | %26 | ? | %3F |
' | %27 | @ | %40 |
( | %28 | [ | %5B |
) | %29 | ] | %5D |
* | %2A | linjeskift | %0A |
URL-koding i JavaScript, Python og PHP
Alle språk har funksjoner for dette, og de skiller seg hovedsakelig i hvordan de behandler mellomrom, skråstreker og ! ' ( ) * ~.
JavaScript har encodeURIComponent (på engelsk) for en verdi, encodeURI for en hel adresse og URLSearchParams for skjemakoding:
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 gjør ikke + om til et mellomrom, og den kaster en URIError ved en ugyldig sekvens som 100%.
I Python ligger funksjonene i urllib.parse. quote beholder / som standard (safe='/') og koder ellers alt unntatt de ikke-reserverte tegnene i RFC 3986. quote_plus skriver mellomrom som + og koder også /:
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'
I PHP koder urlencode på samme måte som et HTML-skjema og skriver mellomrom som +, mens rawurlencode følger RFC 3986 og skriver %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 gir samme resultat som Streng RFC 3986. urlencode tilsvarer Skjemadata, bortsett fra *, som den koder som %2A.
Vanlige spørsmål
Skal et mellomrom kodes som %20 eller +?
%20 fungerer overalt i en URL. Et + betyr bare mellomrom i spørringsstrengen og i skjemadata, formatet HTML-skjemaer sender. I en sti er + et helt vanlig plusstegn, så /a+b forblir /a+b. Trenger en spørringsverdi et ekte plusstegn, skriver du det som %2B. I verktøyet skriver Skjemadata mellomrom som +, og de tre andre modusene skriver %20.
Hva betyr %20, %2F og %3D i en URL?
Det er kodede tegn: %20 er et mellomrom, %2F en skråstrek og %3D et likhetstegn. Andre du ofte ser, er %26 (&), %3F (?), %3A (:), %2C (komma) og %27 (apostrof). De to sifrene er tegnets kode i heksadesimal. Bokstaver med aksenter og andre tegn utenfor ASCII tar to til fire slike par, som %C3%A9 for é. Lim hele strengen inn i dekoderen for å lese den.
Hva er forskjellen mellom encodeURI og encodeURIComponent?
encodeURI er ment for en hel adresse og lar tegnene som gir den struktur, som : / ? # & =, være i fred. encodeURIComponent er ment for én del, en parameterverdi eller et stisegment, og koder også disse tegnene, så https://example.com/?a=1&b=2 blir https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. I dette verktøyet tilsvarer Parameterverdi encodeURIComponent, og Hel URL er som encodeURI, men beholder eksisterende sekvenser som %20 i stedet for å gjøre dem om til %2520.
Hvordan fjerner jeg UTM-parametere fra en URL?
Lim lenken inn på fanen Analyser og rediger URL og trykk på Fjern sporing (n). Den sletter alle utm_*-koder og klikk-ID-er som fbclid og gclid på en gang. Trykk deretter på Kopier URL. Vil du bare fjerne noen av dem, bruker du Fjern parameter på radene du ikke vil ha.
Er URL-koding det samme som kryptering eller Base64?
Nei. URL-koding skjuler ingenting: hvem som helst kan dekode caf%C3%A9 tilbake til café, så det beskytter aldri et passord eller et token. Det gjør bare tegn trygge å bruke i en adresse. Base64 er en annen koding som gjør alle data, også binære filer, om til en streng med 64 tegn. En Base64-streng i en URL må fortsatt ha +, / og = kodet, med mindre du bruker den URL-sikre varianten, som Base64-enkoderen og -dekoderen kan lage.
Blir URL-ene jeg limer inn lastet opp eller lagret?
Nei. Koding, dekoding og parsing kjører i nettleseren din, og ingenting du limer inn sendes til en server. Det er viktig, fordi URL-er ofte inneholder tilgangstokener, økt-ID-er eller koder for tilbakestilling av passord. Nettleseren husker bare fanen og valgene dine, aldri tekstene. Det eneste som laster adressen, er Åpne, som åpner den i en ny fane akkurat som å klikke på lenken.
Flere verktøy for programmerere finner du i kategorien Utviklere, og verktøy som gjør ett format om til et annet, er samlet under Konvertere. Vil du finne ut hva som skiller to lange URL-er, for eksempel et fungerende og et mislykket API-kall, limer du dem inn i verktøyet for å sammenligne tekster og sammenligner per tegn.