Spring til indholdet
Quaestio

URL-kodning

Kod tekst, der skal ind i en webadresse, eller gør en kodet adresse til læsbar tekst.

0 tegn · 0 byte

Resultat

Skriv noget i feltet ovenfor.

Som enkeltdel kodes også skråstreg og spørgsmålstegn. Uden flueben bevares adressens struktur, og kun ulovlige tegn kodes.

Indlejr

Indlejr værktøjet på dit website

Kopiér koden, og indsæt den, hvor værktøjet skal vises, f.eks. i et blogindlæg eller på en skoleside. Det er gratis, boksen har ingen annoncer, og værktøjet regner i den besøgendes browser.

Sådan virker det

Webadresser må kun indeholde et begrænset sæt tegn. Alt andet skrives som et procenttegn efterfulgt af tegnets værdi på hexadecimal form, og det er derfor, et mellemrum bliver til %20.

Forskellen mellem de to tilstande er, hvad der regnes som struktur. Når du koder en enkeltdel, kodes også skråstreg, spørgsmålstegn og lighedstegn, da de ellers ville blive læst som dele af adressen.

Når du koder en hel adresse, lader den de tegn stå, så adressens opbygning bevares. Den tilstand bruger du på en færdig adresse, der kun indeholder enkelttegn, som skal kodes.

Vælger du forkert tilstand på en parameter, kan modtageren læse værdien som flere parametre. Skal en værdi ind efter et lighedstegn, skal den næsten altid kodes som en enkeltdel.

Plustegnet er en fælde: i forespørgselsdelen af en adresse betyder plus historisk et mellemrum, mens det i stien betyder et ægte plustegn.

Funktionerne bag tilstandene

Tilstanden for en enkeltdel bruger JavaScripts encodeURIComponent og decodeURIComponent, og tilstanden for en hel adresse encodeURI og decodeURI, alle fire defineret i ECMAScript-standarden. Hvert tegn, der skal kodes, laves først om til UTF-8, og hver byte skrives som et procenttegn og to hexadecimale cifre. Som enkeltdel bliver smørrebrød & te derfor til sm%C3%B8rrebr%C3%B8d%20%26%20te. Som hel adresse står og-tegnet urørt: sm%C3%B8rrebr%C3%B8d%20&%20te. Et tegn, der ikke kan skrives i UTF-8, for eksempel en enlig halvdel af et surrogatpar fra en ødelagt kopiering, giver en fejlmeddelelse i stedet for et resultat.

Tegn, der aldrig kodes

ECMAScript lader bogstaverne A–Z og a–z, cifrene, understreg, bindestreg, punktum, udråbstegn, tilde, stjerne, apostrof og parenteser stå ukodede i begge tilstande. RFC 3986 regner kun bindestreg, punktum, understreg og tilde som ureserverede; udråbstegn, apostrof, parenteser og stjerne hører til de reserverede skilletegn og kan betyde noget i visse adresser.

Tilstanden for en hel adresse lader desuden semikolon, skråstreg, spørgsmålstegn, kolon, snabel-a, og-tegn, lighedstegn, plus, dollar, komma og havelåge stå urørt. Kantede parenteser kodes derimod, så en IPv6-adresse i adressen, som http://[::1]:8080/, bliver til http://%5B::1%5D:8080/.

Plus og formularer

Formularer kodes efter formatet application/x-www-form-urlencoded, hvor WHATWG’s URL-standard skriver mellemrum som plus og desuden koder udråbstegn, apostrof, parenteser og tilde. Værktøjet skriver altid %20, og afkodningen laver ikke plus om til mellemrum: a+b forbliver a+b. Kommer teksten fra en formular, skal plustegnene først byttes ud med mellemrum.

Fejl ved afkodning

Afkodningen kræver gyldig UTF-8. %F8, som er ø i den ældre tegnkodning Latin-1, giver fejlmeddelelsen, mens %C3%B8 giver ø. Et procenttegn, der ikke efterfølges af to hexadecimale cifre, som i a%2, er også en fejl. I tilstanden for en hel adresse lades kodede skilletegn urørt: a%2Fb forbliver a%2Fb, fordi en afkodet skråstreg ville ændre adressens opbygning.

Kilder

Sådan kontrolleres værktøjerne