URL
URL-encoder
URL's percent-encoderen en decoderen.
Over percent-encoding
Percent-encoding (ook URL-codering genoemd) vervangt tekens die niet veilig zijn binnen een URL — spaties, &, ?, # niet-ASCII-letters, en meer — door een % gevolgd door hun hexadecimale bytewaarde. Zo kunnen query-strings en padsegmenten willekeurige tekst bevatten zonder de syntax van de URL zelf te breken.
Niet elk teken hoeft gecodeerd te worden, en welke set precies met rust wordt gelaten hangt af van de context. RFC 3986 markeert letters, cijfers en - _ . ~ als altijd veilig; al het andere in de "gereserveerde" set (zoals / ? # &) is alleen veilig waar het nog geen syntactische rol vervult. Er is ook een eigenaardigheid specifiek voor formulieren: application/x-www-form-urlencoded, het formaat waarin browsers HTML-formulieren versturen, codeert een spatie als + in plaats van %20 — een conventie die specifiek is voor dat ene inhoudstype, niet voor URL's in het algemeen.
Waar je het tegenkomt
- Query-stringwaarden met spaties, symbolen of niet-Latijnse tekst
- Formulierinzendingen verzonden als application/x-www-form-urlencoded
- Het coderen van redirect-URL's of tokens die als URL-parameters worden meegegeven
- Bestandspaden of zoektermen veilig maken om in een link te zetten
Veelgestelde vragen
Is percent-encoding hetzelfde als Base64?
Nee — ze lossen verschillende problemen op. Percent-encoding escapeert specifieke onveilige tekens binnen tekst die anders leesbaar blijft; Base64 codeert volledige binaire data om naar een vast alfabet.
Waarom blijven sommige tekens ongewijzigd?
Letters, cijfers en een handvol symbolen (- _ . ~) zijn gedefinieerd als altijd veilig in een URL en blijven daarom ongewijzigd.
Codeert dit een hele URL of slechts één deel?
Alleen de tekst die je als waarde plakt. Een hele URL coderen zou ook de schuine strepen en dubbele punten escapen die letterlijk moeten blijven — pas het dus toe op individuele querywaarden, niet op het hele adres.
Waarom wordt een spatie soms + en soms %20?
Beide zijn geldig, maar op verschillende plekken. In het pad of de queryreeks van een URL wordt een spatie terecht als %20 gecodeerd. De +-afkorting is specifiek voor het formaat application/x-www-form-urlencoded waarin HTML-formulieren worden verstuurd; daar moet een letterlijke + zelf naar %2B worden gecodeerd om dubbelzinnigheid te voorkomen. Deze tool produceert %20, wat altijd correct is; als je zelf een formuliergecodeerde body bouwt, verwissel dan gecodeerde spaties voor +.