URL-kodning och avkodning
**Metabeskrivning (153):** Procentkoda text för webbadresser eller avkoda %HH-sekvenser tillbaka till tecken. Jämför komponentläge med fullt URI-läge och se varför %20 och + inte är samma. **URL:** `/url-encode-decode/` **Schema:** `WebApplication` + `FAQPage` + `BreadcrumbList`
Alla beräkningar körs i webbläsaren. Ingenting du anger skickas till en server.
Resultaten uppdateras medan du skriver. Ctrl/Cmd+Enter kopierar huvudresultatet.
Resultat
—
Bitvy
Visa uträkning
URL-kodning och avkodning tillämpar RFC 3986 procentkodning på text och vänder tillbaka %HH-sekvenser till tecken. Komponentläget kodar reserverade tecken som /, ? och & så att de kan sitta säkert i en enda frågeparameter. Full-URI-läge bevarar strukturella avgränsare så att en komplett adress förblir en användbar länk. Utrymmeshantering erbjuder både %20 och det formulärkodande plustecknet.
All kodning och avkodning körs i din webbläsare. Inget du klistrar in skickas till en server.
Koda text för säker användning i en URL
Procentkodning ersätter osäkra eller reserverade byte med ett procenttecken följt av två hexadecimala siffror. Siffrorna är bytevärdet, vanligtvis från UTF-8. Ange en sträng, välj komponent- eller full-URI-läge och kopiera det kodade resultatet till en frågesträng, sökvägssegment eller omdirigeringsmål.
Karaktärer som redan finns i det oreserverade setet passerar oförändrat. Allt annat blir %HH-sekvenser i komponentläge. Kodning är reversibel när samma regler används för avkodning; att blanda formkodning plustecken med "%20" i sökväg är den vanliga källan till trasiga rundresor.
Avkoda en procentkodad sträng
Avkodning hittar varje % följt av två hexadecimala siffror, konverterar det paret till en byte och bygger om den ursprungliga texten med den valda teckenkodningen. En ensam % eller en % med icke-hexadecimala siffror är ett fel. Plustecken kan valfritt behandlas som mellanslag när inmatningen kom från "application/x-www-form-urlencoded" kroppar.
Kapslad kodning visas när ett värde kodades två gånger. Avkodning en gång kan fortfarande lämna "%25"-sekvenser som representerar en bokstavlig procent. Avkoda igen endast när det andra lagret var avsiktligt; blind dubbelavkodning korrumperar data som innehöll ett riktigt %-tecken.
Förstå reserverade och oreserverade tecken
RFC 3986 delar upp ASCII i oreserverade tecken som aldrig behöver kodas i en URI, och reserverade tecken som har en strukturell betydelse som avgränsare. Oreserverade bokstäver, siffror och -_.~ förblir bokstavliga. Reserverade märken som /, ? och & måste vara procentkodade när de visas som data snarare än som syntax som ramar in webbadressen.
Oreserverad: A till Z, a till z, 0 till 9, bindestreck -, understreck _, punkt ., tilde ~
Reserverad (gen-delims): `: / ?
Reserverad (underdelimeringar): ! $ & ' ( ) * + , ; =
Oreserverade tecken förblir bokstavliga. Reserverade tecken måste kodas när de visas som data snarare än som avgränsare. Ett frågetecken inuti ett parametervärde är data; ett frågetecken som startar frågesträngen är struktur. Lägesval är hur räknaren vet vilken roll varje karaktär spelar.
Koda en hel URL kontra en enda parameter
Full-URI-kodning, som liknar JavaScript "encodeURI", lämnar strukturella tecken ifred så att "https://" och snedstreck av sökväg överlever. Komponentkodning, liknande "encodeURIComponent", kodar dessa tecken så att ett värde kan sitta inuti en parameter utan att bryta den omgivande URL:en. Att välja fel läge förstör antingen en länk eller lämnar avgränsare som delar upp frågan felaktigt.
| Input | Full-URI style | Component style |
|---|---|---|
https://example.com/a b | https://example.com/a%20b | https%3A%2F%2Fexample.com%2Fa%20b |
red&blue | red&blue | red%26blue |
a=b | a=b | a%3Db |
Om du kodar en hel URL med komponentläge förstörs den som en länk: schemats kolon och snedstreck blir %3A och %2F. Om du kodar en enskild parameter med fullt URI-läge lämnas "&" och "=" intakta, vilket delar upp frågan felaktigt. Välj det läge som matchar den plats som strängen kommer att uppta.
Koda ett snedstreck och ett frågetecken
Fixtursträngen / och ? i komponentläge blir %2F%20och%20%3F. Snedstrecket och frågetecknet är reserverade avgränsare som behandlas här som nyttolasttext, så var och en escapes. Mellanslag blir "%20", medan bokstäverna i "och" är oreserverade och passerar oförändrade från vänster till höger över strängen.
| Character | Reason | Encoded |
|---|---|---|
/ | reserved path delimiter | %2F |
| space | not unreserved | %20 |
a, n, d | unreserved letters | unchanged |
? | reserved query delimiter | %3F |
Stega genom strängen från vänster till höger: koda /, koda mellanslag, skicka and, koda mellanslag, koda ?. Resultatet %2F%20and%20%3F är säkert att placera i en frågeparameter som heter till exempel q. Att använda fullt URI-läge på samma sträng skulle lämna / och ? bokstavliga, vilket är korrekt endast när dessa tecken är avsedda som struktur snarare än som nyttolasttext.
Förstå %20 kontra plustecknet
Ett mellanslag kodar som %20 i URI-sökvägar och i moderna frågesträngar som följer RFC 3986. HTML-formulär som skickas som application/x-www-form-urlencoded kodar historiskt mellanslag som + istället. Båda konventionerna förekommer i produktionstrafik, och att behandla dem som identiska är den vanligaste rymdkodningsbuggen vid avkodning av blandade indata.
| Context | Space encoding |
|---|---|
| Path segment | %20 |
| RFC 3986 query | %20 |
| Form body / legacy query | + |
En bokstavlig plusteckendata måste kodas som "%2B", annars kommer en formuläravkodare att behandla den som ett mellanslag. Kalkylatorn anger vilken utrymmeskonvention som är aktiv så att ett avkodat "+" inte misstas för ett plustecken när formulärläget är på, och ett "%20" inte avvisas när sökvägsläget är på.
Dela upp en URL i dess delar
En typisk URL har ett schema, värd, valfri port, sökväg, frågesträng och fragment, och kodningsreglerna skiljer sig åt mellan olika delar. Strukturella avgränsare som ://, /, ?, &, = och # förblir bokstavliga när de ramar in adressen.
Parameternamn, parametervärden och sökvägssegment som bär data kodas individuellt i komponentläge innan dessa avgränsare förenas med dem.
https://example.com:443/search?q=a%20b&lang=en#top
└─┬─┘ └─────┬─────┘ └─┬──┘ └───────┬───────┘ └┬┘
scheme host path query fragment
| Part | Role |
|---|---|
| Scheme | Protocol, such as https |
| Host | Domain or IP, with optional port |
| Path | Resource location, slash-separated |
| Query | Parameter list after ?, joined by & |
| Fragment | Client-side location after #, not sent to the server in the request URI the same way |
Koda parameternamn och -värden individuellt i komponentläge och anslut sedan med bokstavliga "&" och "=". Koda sökvägssegment individuellt om de innehåller mellanslag eller reserverade tecken, och behåll snedstreck som skiljer segment bokstavliga.
Läs teckenkodningstabellen
Tabellen nedan listar vanliga reserverade och osäkra tecken med deras procentformer under UTF-8-bytekodning. Ett blanksteg blir %20, ett et-tecken %26 och en hash %23. Icke-ASCII-tecken expanderar till flera "%HH"-enheter eftersom varje UTF-8-byte kodas separat snarare än som en enda abstrakt glyf.
| Char | Percent | Notes |
|---|---|---|
| space | %20 | Or + in form encoding |
! | %21 | |
# | %23 | Fragment delimiter |
$ | %24 | |
& | %26 | Query pair delimiter |
' | %27 | |
( | %28 | |
) | %29 | |
+ | %2B | Literal plus |
, | %2C | |
/ | %2F | Path delimiter |
: | %3A | Scheme / host separator |
; | %3B | |
= | %3D | Parameter assignment |
? | %3F | Query start |
@ | %40 | Userinfo separator |
[ | %5B | |
] | %5D |
Icke-ASCII-text uttrycks först som UTF-8-byte, sedan procentkodas varje byte. Ett enda tecken kan därför expandera till två eller tre %HH-enheter. Karaktärskodande djupdykning för Shift JIS och liknande äldre set live med verktyget Base64; den här sidan länkar istället för att upprepa den katalogen.
Vanliga frågor
Vad är procentkodning?
Procentkodning ersätter en byte med en "%" följt av två hexadecimala siffror av den bytens värde. Den låter reserverade och icke-ASCII-tecken färdas i webbadresser utan att läsas som syntax. Avkodning vänder ersättningen.
När ska komponentkodning användas?
Använd komponentkodning för ett enda parameternamn eller -värde, ett sökvägssegment som är ren data eller någon sträng som kommer att infogas bredvid strukturella avgränsare. Den kodar /, ?, & och = så att de inte kan dela URL:en.
När ska full-URI-kodning användas?
Använd full-URI-kodning när inmatningen redan är en fullständig URL och endast olagliga tecken som blanksteg bör ändras. Strukturella kolon och snedstreck förblir bokstavliga så resultatet förblir en klickbar adress.
Varför blir / och ? %2F%20och%20%3F?
I komponentläge behandlas snedstrecket och frågetecknet som data, så de kodar till %2F och %3F. Mellanslag blir %20. Bokstäver i och är oreserverade och förblir som de är.
Är + samma som %20?
Nej. %20 är RFC 3986-kodningen för ett mellanslag. + betyder endast utrymme i application/x-www-form-urlencoded data. Ett bokstavligt plus måste vara "%2B", annars förvandlar formavkodare det till ett mellanslag.
Vilka tecken behöver aldrig kodas?
Den oreserverade uppsättningen: bokstäver, siffror, bindestreck, understreck, punkt och tilde. Dessa karaktärer förblir bokstavliga i båda lägena. Att koda dem fungerar fortfarande men ger onödig längd.
Hur kodas icke-ASCII-tecken?
De konverteras först till UTF-8 byte, sedan procentkodas varje byte. Ett synligt tecken kan bli flera %HH-sekvenser. Avkodning måste använda UTF-8 för att bygga om originaltexten.
Åtgärdar avkodning två gånger en trasig URL?
Endast om värdet avsiktligt kodats två gånger. Annars förstör det andra passet bokstavliga %-sekvenser som var en del av data. Avkoda en gång, inspektera och avkoda igen endast när %25-mönster visar ett andra lager.
Är detta samma som Base64?
Nej. Procentkodning escape-tecken för URI:er. Base64 mappar godtyckliga bytes till ett 64-teckens alfabet för transport i textprotokoll. Använd var och en för sitt eget jobb.
Laddas inklistrade webbadresser upp?
Nej. Kodning och avkodning körs endast i webbläsaren. Frågesträngar som innehåller tokens eller sessionsfragment överförs inte till en server av detta verktyg.
Sammanfattning
URL-kodning och avkodning procentkodar och avkodar text enligt RFC 3986-regler, med separata lägen för fullständiga URI:er och enskilda komponenter. Fixturen / och ? blir %2F%20och%20%3F i komponentläge. Spaces använder %20 i URI-sammanhang och kan använda + i formkodning, vilket är en annan konvention.
Reserverade karaktärer behåller sin betydelse endast när de lämnas bokstavlig som struktur; koda dem när de är nyttolast. Allt arbete stannar på enheten.
Relaterade miniräknare
Base64 Koda och avkoda · IP-subnätskalkylator · Hexkalkylator