URL-koda och avkoda
Gör text säker att använda i en URL, eller omvandla sekvenser som %20 tillbaka till läsbara tecken. Verktyget använder webbläsarens egna encodeURIComponent, encodeURI och decodeURIComponent, visar frågeparametrar i en tabell och skickar ingenting till någon server.
0 tecken · 0 ord · 0 rader
0 tecken · 0 ord · 0 rader
Körs helt i den här webbläsarfliken. Din text laddas aldrig upp eller sparas.
Vad varje funktion escapar
Beräknat med webbläsarens egna funktioner. encodeURIComponent lämnar bokstäver, siffror och dessa tecken orörda: ! ' ( ) * - . _ ~
| Tecken | encodeURIComponent | encodeURI |
|---|---|---|
(mellanslag) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Procentkodning och de reserverade tecknen i RFC 3986
En URL får bara innehålla en begränsad uppsättning ASCII-tecken. RFC 3986, specifikationen för URI-syntax från 2005, delar in dem i två grupper. De oreserverade tecknen, A–Z, a–z, 0–9 och de fyra tecknen - . _ ~, behöver aldrig kodas. De reserverade tecknen har en uppgift: de allmänna avgränsarna : / ? # [ ] @ skiljer schema, värd, sökväg, frågesträng och fragment åt, och underavgränsarna ! $ & ' ( ) * + , ; = skiljer objekt inom dem åt, som & och = gör i en frågesträng. Allt annat, och varje reserverat tecken som används som vanlig data, måste procentkodas.
Procentkodning skriver en byte som % följt av två hexadecimala siffror. Texten omvandlas först till UTF-8, så ett blanksteg blir %20, ett é (två byte) blir %C3%A9 och en emoji blir fyra %XX-grupper. Därför hamnar en sökning på "café & bar" i en länk som caf%C3%A9%20%26%20bar: tecknet & kodas så att servern inte tolkar det som starten på en ny parameter.
encodeURIComponent, encodeURI och avkodning
encodeURIComponent är rätt val för en enskild del, till exempel ett värde i en frågesträng, ett sökvägssegment eller en omdirigerings-URL som skickas som parameter. Funktionen kodar allt utom de oreserverade tecknen och ! ' ( ) *, som JavaScript av historiska skäl lämnar orörda. encodeURI (hela URL:en) utgår från att indata redan är en komplett adress och behåller de reserverade tecknen, så i https://example.com/a b?q=1 kodas bara blanksteget. Att använda encodeURI på ett parametervärde är ett klassiskt fel: ett & eller # i värdet skulle finnas kvar och förstöra URL:en.
Avkoda gör det omvända för båda funktionerna. HTML-formulär som skickas med GET använder det äldre formatet application/x-www-form-urlencoded, där ett blanksteg skrivs som + i stället för %20. Låt Behandla + som blanksteg vara ikryssat för sådana, och avmarkera det när ett riktigt plustecken spelar roll, som i ett telefonnummer. Om indata innehåller ett % som inte följs av två hexadecimala siffror, eller byte som inte är giltig UTF-8, misslyckas avkodningen med ett tydligt meddelande i stället för att gissa. När texten innehåller en frågesträng visas dess parametrar avkodade i en tabell under verktyget. För binärdata i URL:er är Base64url det vanliga alternativet.
Vanliga frågor
- Ska ett mellanslag i en URL vara %20 eller ett plustecken?
- I sökvägar och enligt RFC 3986 är ett blanksteg %20. Formen + betyder bara blanksteg i frågesträngar som kodats som HTML-formulär gör, så %20 är det säkra valet överallt.
- Varför innehåller min URL plötsligt %2520?
- Den har kodats två gånger. Första omgången gjorde ett blanksteg till %20, och den andra kodade själva %-tecknet som %25. Avkoda en gång för att ta bort det extra lagret, och koda värden på bara ett ställe i koden.
- Vilka tecken behöver aldrig procentkodas?
- De oreserverade tecknen i RFC 3986: bokstäverna A till Z som versaler och gemener, siffrorna 0 till 9 samt bindestreck, punkt, understreck och tilde.
- Kan en URL innehålla bokstäver som å, ä och ö utan kodning?
- Webbläsare visar dem, men i själva överföringen skickas varje icke-ASCII-tecken i en sökväg eller frågesträng som procentkodad UTF-8. Domännamn använder ett separat system, Punycode, som gör om dem till xn---etiketter.
- Varför rapporterar avkodningen en felaktig sekvens?
- Texten innehåller ett % som inte följs av två hexadecimala siffror, till exempel ett bokstavligt "100%", eller så avkodas byten till ogiltig UTF-8. Koda lösa %-tecken som %25 före avkodning.