URL-koding og -dekoding
Gjør tekst trygg å bruke i en URL, eller gjør sekvenser som %20 om til lesbare tegn igjen. Verktøyet bruker nettleserens egne encodeURIComponent, encodeURI og decodeURIComponent, viser spørreparametere i en tabell og sender ingenting til en server.
0 tegn · 0 ord · 0 linjer
0 tegn · 0 ord · 0 linjer
Kjører helt i denne nettleserfanen. Teksten din lastes aldri opp eller lagres.
Hva hver funksjon escaper
Beregnet med selve nettleserfunksjonene. encodeURIComponent lar bokstaver, sifre og disse tegnene stå: ! ' ( ) * - . _ ~
| Tegn | encodeURIComponent | encodeURI |
|---|---|---|
(mellomrom) | %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 |
Prosentkoding og de reserverte tegnene i RFC 3986
En URL kan bare inneholde et begrenset sett med ASCII-tegn. RFC 3986, spesifikasjonen for URI-syntaks fra 2005, deler dem i to grupper. De ureserverte tegnene, A–Z, a–z, 0–9 og de fire tegnene - . _ ~, trenger aldri koding. De reserverte tegnene har egne oppgaver: de generelle skilletegnene : / ? # [ ] @ skiller skjema, vert, bane, spørring og fragment, og underskilletegnene ! $ & ' ( ) * + , ; = skiller elementer innenfor dem, slik & og = gjør i en spørrestreng. Alt annet, og alle reserverte tegn som brukes som vanlige data, må prosentkodes.
Prosentkoding skriver en byte som % etterfulgt av to heksadesimale sifre. Teksten konverteres først til UTF-8, slik at et mellomrom blir %20, en é (to byte) blir %C3%A9 og en emoji blir fire %XX-grupper. Derfor havner et søk etter «café & bar» i en lenke som caf%C3%A9%20%26%20bar: &-tegnet kodes slik at serveren ikke tolker det som starten på en ny parameter.
encodeURIComponent, encodeURI og dekoding
encodeURIComponent er riktig valg for en enkelt del, for eksempel en spørreverdi, et banesegment eller en omdirigerings-URL som sendes som parameter. Den koder alt unntatt de ureserverte tegnene og ! ' ( ) *, som JavaScript lar stå av historiske grunner. encodeURI (hele URL-en) forutsetter at inndataene allerede er en komplett adresse og beholder de reserverte tegnene, så i https://example.com/a b?q=1 er det bare mellomrommet som kodes. Å bruke encodeURI på en parameterverdi er en klassisk feil: en & eller # inni verdien blir stående og ødelegger URL-en.
Dekod reverserer begge funksjonene. HTML-skjemaer som sendes med GET bruker det eldre formatet application/x-www-form-urlencoded, der et mellomrom skrives som + i stedet for %20. La Behandle + som mellomrom være avkrysset for slike, og fjern avkrysningen når et ekte plusstegn betyr noe, for eksempel i et telefonnummer. Hvis inndataene inneholder en % som ikke følges av to heksadesimale sifre, eller byte som ikke er gyldig UTF-8, feiler dekodingen med en tydelig melding i stedet for å gjette. Når teksten inneholder en spørrestreng, vises parameterne dekodet i en tabell under verktøyet. For binærdata i URL-er er Base64url det vanlige alternativet.
Ofte stilte spørsmål
- Skal et mellomrom i en URL være %20 eller et plusstegn?
- I baner og etter RFC 3986 er et mellomrom %20. +-formen betyr bare mellomrom i spørrestrenger kodet slik HTML-skjemaer koder dem, så %20 er det sikre valget overalt.
- Hvorfor endte URL-en min opp med %2520?
- Den ble kodet to ganger. Første runde gjorde et mellomrom til %20, og andre runde kodet selve %-tegnet som %25. Dekod én gang for å fjerne det ekstra laget, og kod verdier bare ett sted i koden din.
- Hvilke tegn trenger aldri prosentkoding?
- De ureserverte tegnene i RFC 3986: bokstavene A til Z med store og små bokstaver, sifrene 0 til 9, samt bindestrek, punktum, understrek og tilde.
- Kan en URL inneholde bokstaver som æ, ø og å uten koding?
- Nettlesere viser dem, men over nettverket sendes hvert ikke-ASCII-tegn i en bane eller spørring som prosentkodet UTF-8. Domenenavn bruker et eget system, Punycode, som gjør dem om til xn---etiketter.
- Hvorfor melder dekodingen om en ugyldig sekvens?
- Teksten har en % som ikke følges av to heksadesimale sifre, for eksempel et ordrett «100%», eller byteene dekodes til ugyldig UTF-8. Kod løse %-tegn som %25 før dekoding.