URL
URL-kodare
Procentkoda och avkoda URL:er.
Om procentkodning
Procentkodning (även kallat URL-kodning) ersätter tecken som inte är säkra i en URL — mellanslag, &, ?, # icke-ASCII-tecken med mera — med ett % följt av deras hexadecimala bytevärde. Det är så frågesträngar och sökvägssegment kan bära godtycklig text utan att förstöra URL:ens egen syntax.
Inte alla tecken behöver kodas, och exakt vilken uppsättning som lämnas ifred beror på sammanhanget. RFC 3986 markerar bokstäver, siffror och - _ . ~ som alltid säkra; allt annat i den "reserverade" uppsättningen (som / ? # &) är bara säkert där det inte redan fyller en syntaktisk funktion. Det finns även en formulärspecifik egenhet: application/x-www-form-urlencoded, formatet webbläsare använder för att skicka HTML-formulär, kodar ett mellanslag som + i stället för %20 — en konvention specifik för just den innehållstypen, inte för URL:er i allmänhet.
Var du stöter på det
- Värden i frågesträngar med mellanslag, symboler eller icke-latinsk text
- Formulärinskick som skickas som application/x-www-form-urlencoded
- Kodning av omdirigerings-URL:er eller token som skickas som URL-parametrar
- Göra filsökvägar eller söktermer säkra att lägga i en länk
Vanliga frågor
Är procentkodning samma som Base64?
Nej — de löser olika problem. Procentkodning escapar specifika osäkra tecken i text som annars är läsbar; Base64 kodar om hela binärdata till ett fast alfabet.
Varför förblir vissa tecken oförändrade?
Bokstäver, siffror och ett fåtal symboler (- _ . ~) definieras som alltid säkra i en URL och lämnas därför orörda.
Kodar detta en hel URL eller bara en del?
Bara texten du klistrar in som ett värde. Att koda en hel URL skulle även escapa snedstreck och kolon som måste förbli literala — använd det därför på enskilda frågevärden, inte hela adressen.
Varför blir ett mellanslag ibland + och ibland %20?
Båda är giltiga, men på olika ställen. I en URL:s sökväg eller frågesträng kodas ett mellanslag korrekt som %20. Genvägen + är specifik för formatet application/x-www-form-urlencoded som HTML-formulär skickas som, där ett bokstavligt + i sig måste kodas till %2B för att undvika tvetydighet. Det här verktyget producerar %20, vilket alltid är korrekt; om du bygger en formulärkodad kropp för hand, byt ut kodade mellanslag mot +.