Procentkodning i URL:er

Procentkodning är mekanismen som möjliggör URL:er med specialtecken, internationell text och binär data.

Kodningsprocessen

Processen är enkel: Ta ASCII-värdet (eller UTF-8-byte) och skriv det som %XX där XX är hexadecimalt.

Exempel: Mellanslagstecknet är ASCII 32 = hex 20, så det blir %20. Tecknet & är ASCII 38 = hex 26, så det blir %26. Tecknet % självt är ASCII 37 = hex 25, så det blir %25.

För icke-ASCII-tecken konvertera först till UTF-8-bytes. Tecknet € är UTF-8-bytes E2 82 AC och blir %E2%82%AC.

Avkodning reverserar processen: Hitta %XX-sekvenser, konvertera hex till bytes, tolka bytes som UTF-8.

Stora/små bokstäver i hex-siffror: Både %2F och %2f är giltiga och ekvivalenta. Konventionen föredrar versaler för konsekvens.

Vanliga Misstag

Dubbelkodning händer när redan kodade URL:er kodas igen. %20 blir %2520. Detta händer när du inte kontrollerar kodningen på båda nivåerna. Symptom: URL:er som bokstavligen visar %20 istället för mellanslag.

Underkodning lämnar tecken okodade som borde kodas. Detta bryter URL:er eller skapar säkerhetssårbarheter. Koda alltid användarinmatning fullständigt.

Att använda fel funktion i JavaScript: encodeURI() vs encodeURIComponent(). Kom ihåg: encodeURIComponent för värden, encodeURI för hela URL:er (sällan behövs).

Att koda mellanslag som + fungerar bara i query strings och bara i vissa sammanhang. Använd %20 för universiell kompatibilitet. Många system accepterar inte + som mellanslag i sökvägsdelen.

Unicode-normalisering glöms ofta bort. Samma synliga tecken kan ha olika Unicode-representationer som kodas olika. Normalisera före kodning om konsekvens är viktigt.

När Vad Måste Kodas

Query-parametrar måste alltid kodas när de innehåller användarinmatning. '?search=' + encodeURIComponent(userQuery) förhindrar injektionsattacker och trasiga URL:er.

URL-sökvägar behöver / okodat (sökvägsavskiljare) men andra specialtecken kodade. För ett filnamn som 'Tom & Jerry.pdf': '/files/' + encodeURIComponent(filename).

Fragment-identifierare (efter #) har olika regler. Vissa applikationer förväntar sig okodade fragment, andra kodade. Kontrollera din plattforms dokumentation.

Kompletta URL:er från användare bör saneras. Validera protokollet (tillåt endast http/https, blockera javascript:), kontrollera för kodningsmissbruk och överväg URL-valideringsbibliotek.

API-förfrågningar: De flesta HTTP-bibliotek hanterar kodning automatiskt. Om du bygger URL:er manuellt, koda varje parametervärde individuellt, sammanfoga sedan med &.

Prova verktyget

URL Kodare/Avkodare

URL Kodare/Avkodare