Procentkodning i URL:er: vad %20, + och %2F egentligen betyder
Procentkodning skriver ett tecken som en URL inte kan bära säkert som ett procenttecken följt av tecknets bytevärde i hexadecimal form. Ett mellanslag blir %20, ett et-tecken blir %26 och ett snedstreck blir %2F. Kodningen skyddar en länks struktur, eftersom tecken som & och = skiljer delarna i en frågesträng åt.
Vilka tecken kan stå kvar som de är
URI-standarden (RFC 3986), som URL:er bygger på, lämnar vissa tecken orörda: bokstäverna A till Z och a till z, siffrorna och de fyra tecknen - _ . ~. Dessa behöver aldrig kodas. Andra tecken har en uppgift i en URL. Kolon skiljer schemat från resten, snedstreck skiljer delar av sökvägen, frågetecknet inleder frågesträngen, hashtecknet inleder ett fragment, och & och = delar upp frågesträngen i namn och värden. Ett tecken med en uppgift måste kodas när du menar det som data och inte som struktur.
Därför kan samma tecken kodas på ett ställe men inte på ett annat. I ett frågevärde måste et-tecknet vara %26, annars delas länken på fel ställe. I sökvägen till en länk är det bara ett tecken.
Bokstäver utanför det engelska alfabetet
Bokstäver utanför det grundläggande engelska alfabetet kodas som sina UTF-8-bytes, och varje byte skrivs som en procentkod. Bokstaven é i café består av de två bytena C3 och A9, så den blir %C3%A9, och hela ordet blir caf%C3%A9.
Ett enkelt exempel gör reglerna konkreta. Texten a b&c=d/é, kodad som komponent, blir a%20b%26c%3Dd%2F%C3%A9. Varje tecken som inte är en säker bokstav, siffra eller markering kodas: mellanslaget, et-tecknet, likhetstecknet, snedstrecket och den accenterade bokstaven.
Komponent eller hela URL
Det finns två slags kodning, och det finns en anledning till det. En komponentkodning behandlar varje reserverat tecken som data. Använd den för ett enskilt värde, till exempel en sökterm eller ett filnamn i en länk. Om du kodar "rock & roll" som sökterm blir resultatet rock%20%26%20roll, så et-tecknet stannar inuti värdet.
En kodning av hela URL:en bevarar strukturen. Om du kodar https://example.com/a b blir resultatet https://example.com/a%20b, med snedstreck och kolon orörda. Använd den för en komplett adress som behöver göras giltig, inte för ett värde som ska ligga inuti en länk.
URL-verktyget har därför inställningarna Komponent och Hela URL. Avkodning av hela URL:en behåller också kodade strukturtecken som %26 och %3D, så länken fungerar fortfarande efter avkodningen.
Plustecken och formulärdata
Webbformulär använder en annan konvention. När ett formulär skickas som formulärdata skrivs ett mellanslag som + i stället för %20. Ett bokstavligt plustecken skrivs då som %2B. Frasen C++ tips blir alltså C%2B%2B+tips i formulärdata och C%2B%2B%20tips i en vanlig komponentkodning.
Avkodningen har samma skillnad. I en frågesträng betyder + oftast ett mellanslag. I sökvägen till en länk är + ett plustecken. Verktyget läser + som mellanslag bara när Använd + för mellanslag (formulärdata) är ikryssat, så lämna det avbockat för sökvägar och för värden där plustecknet är ett riktigt tecken.
Så läser du en lång frågesträng
En länk bär ofta sina inställningar efter frågetecknet. Ta det här exemplet:
https://shop.example/search?q=red%20shirt&size=M&tag=summer%2Bsale
Avkodad säger den att sökningen gäller red shirt, storleken är M och taggen är summer+sale. %2B förblir ett plustecken eftersom det var kodat. Klistra in länken i URL-verktyget så listas varje namn och värde efter avkodningen, vilket gör en lång länk lätt att läsa. Om du bara vill ha den kortare adressen utan spårningsinställningar kan du rensa länken först.
Dubbel kodning
Det vanligaste misstaget är att koda ett värde två gånger. Om du kodar texten %20 igen blir resultatet %2520, eftersom procenttecknet självt kodas som %25. Sidan letar då efter ett bokstavligt %20 i värdet, och sökningen eller sidan matchar inte. Avkoda länken en gång, kontrollera resultatet, och koda ett värde bara när du behöver det.
Trasiga escape-sekvenser
Ett procenttecken måste följas av två hexadecimala siffror, och siffrorna måste bilda giltig UTF-8 för accenterade bokstäver. En länk som klipps av, eller ett lösryckt procenttecken i en text, kan lämna kvar en trasig sekvens som %E0%A4%A. Verktyget avkodar det som går, lämnar de trasiga bytena exakt som de står och anger hur många den inte kunde avkoda. Det stannar inte vid det första felet.
Specialfall
- Mellanslag i en länk som skrivits för hand. En webbläsares adressfält kodar mellanslag åt dig, men en länk som kopierats in i ett dokument kan fortfarande innehålla råa mellanslag. Koda dem innan du skickar vidare länken.
- Domännamn med icke-engelska tecken. Dessa använder ett eget system, punycode, och att koda sökvägen eller frågesträngen ändrar inte värdnamnet.
- Halv emoji. En trasig kopia kan lämna kvar en enstaka surrogathalva, som inte går att koda. Verktyget ersätter den med ersättningstecknet och talar om att det gjorde det.
- Base64 i länkar. Ett Base64-värde i en länk följer sina egna regler, med - och _ i stället för + och /. Se Base64 förklarat.
Så gör du med fixmint
- Klistra in texten eller länken i Text eller URL.
- Välj Koda eller Avkoda, och sedan Komponent för ett enskilt värde eller Hela URL för en hel adress.
- Bocka i Använd + för mellanslag (formulärdata) för länkar som kopierats från ett webbformulär.
- För en länk, läs Frågeparametrar, avkodade för att se varje namn och värde.
- Kopiera resultatet.
Snabba svar
Vad betyder %20?
Ett mellanslag. Dess bytevärde är 20 i hexadecimal form.
Varför finns det ett + i min länk i stället för %20?
Länken kommer troligen från ett formulär, där + står för ett mellanslag. Alternativet "Använd + för mellanslag (formulärdata)" avkodar det.
Varför ser jag %2520 i min länk?
Värdet har kodats två gånger. Procenttecknet i %20 har kodats igen som %25. Avkoda en gång för att få tillbaka %20, och en gång till för att få mellanslaget.
Översatt från Engelsk original med hjälp av AI.
Kommentarer
Inga kommentarer än. Var först.


