URL-koding
Kod tekst som skal inn i en nettadresse, eller gjør en kodet adresse om til lesbar tekst.
0 tegn · 0 byte
Resultat
Som enkeltdel kodes også skråstrek og spørsmålstegn. Uten kryss bevares strukturen i adressen, og bare ulovlige tegn kodes.
Slik fungerer det
Nettadresser kan bare inneholde et begrenset sett med tegn. Alt annet skrives som et prosenttegn fulgt av tegnets verdi på heksadesimal form, og det er derfor et mellomrom blir %20.
Forskjellen mellom de to modusene er hva som regnes som struktur. Når du koder en enkeltdel, kodes også skråstrek, spørsmålstegn og likhetstegn, siden de ellers ville blitt lest som deler av adressen.
Når du koder en hel adresse, lar den de tegnene stå, slik at oppbygningen av adressen bevares. Den modusen bruker du på en ferdig adresse som bare inneholder enkelttegn som må kodes.
Velger du feil modus på en parameter, kan mottakeren lese verdien som flere parametere. Skal en verdi inn etter et likhetstegn, skal den nesten alltid kodes som en enkeltdel.
Plusstegnet er en felle: i spørredelen av en adresse betyr pluss historisk et mellomrom, mens det i stien betyr et ekte plusstegn.
Funksjonene bak modusene
Modusen for en enkeltdel bruker JavaScripts encodeURIComponent og decodeURIComponent, og modusen for en hel adresse encodeURI og decodeURI, alle fire definert i ECMAScript-standarden. Hvert tegn som skal kodes, gjøres først om til UTF-8, og hver byte skrives som et prosenttegn og to heksadesimale sifre. Som enkeltdel blir smørbrød & te derfor sm%C3%B8rbr%C3%B8d%20%26%20te. Som hel adresse står og-tegnet igjen: sm%C3%B8rbr%C3%B8d%20&%20te. Et tegn som ikke kan skrives i UTF-8, for eksempel en enslig halvdel av et surrogatpar fra en ødelagt kopiering, gir en feilmelding i stedet for et resultat.
Tegn som aldri kodes
ECMAScript lar bokstavene A–Z og a–z, sifrene, understrek, bindestrek, punktum, utropstegn, tilde, stjerne, apostrof og parenteser stå ukodet i begge modusene. RFC 3986 regner bare bindestrek, punktum, understrek og tilde som ureserverte; utropstegn, apostrof, parenteser og stjerne hører til de reserverte skilletegnene og kan bety noe i enkelte adresser.
Modusen for hel adresse lar dessuten semikolon, skråstrek, spørsmålstegn, kolon, krøllalfa, og-tegn, likhetstegn, pluss, dollar, komma og nummertegn stå urørt. Hakeparenteser kodes derimot, så en IPv6-adresse i adressen, som http://[::1]:8080/, blir http://%5B::1%5D:8080/.
Pluss og skjemaer
Skjemaer kodes etter formatet application/x-www-form-urlencoded, der WHATWGs URL-standard skriver mellomrom som pluss og i tillegg koder utropstegn, apostrof, parenteser og tilde. Verktøyet skriver alltid %20, og dekodingen gjør ikke pluss om til mellomrom: a+b forblir a+b. Kommer teksten fra et skjema, må plusstegnene byttes ut med mellomrom først.
Dekodingsfeil
Dekodingen krever gyldig UTF-8. %F8, som er ø i den eldre tegnkodingen Latin-1, gir feilmeldingen, mens %C3%B8 gir ø. Et prosenttegn som ikke følges av to heksadesimale sifre, som i %G5 eller et prosenttegn helt til slutt, er også en feil. I modusen for hel adresse lar verktøyet kodede skilletegn stå: a%2Fb forblir a%2Fb, fordi en dekodet skråstrek ville endret adressens oppbygning.