Was ist URL-Encoding?
URLs dürfen nur eine begrenzte Menge an ASCII-Zeichen enthalten. Alles andere — Leerzeichen, &, =, ?, Nicht-ASCII-Zeichen — muss prozent-kodiert werden. Jedes unzulässige Byte wird durch % gefolgt von seinem zweistelligen Hex-Wert ersetzt. Zum Beispiel wird ein Leerzeichen zu %20 und é zu %C3%A9 (seine UTF-8-Bytefolge).
encodeURIComponent vs. encodeURI
JavaScript bietet zwei eingebaute Funktionen mit unterschiedlichen Escape-Regeln:
- encodeURIComponent kodiert nahezu alles — sicher, um einen einzelnen Wert in einen Query-String oder Pfadabschnitt einzubetten.
- encodeURI erhält Zeichen, die in einer vollständigen URL gültig sind (
:/?#[]@!amp;'()*+,;=), und ist damit für das Kodieren einer gesamten URL gedacht, ohne ihre Struktur zu zerstören.
Faustregel: encodeURIComponent beim Einfügen von Nutzereingaben in eine URL, encodeURI beim Bereinigen einer bereits gebildeten URL.
Gängige Beispiele
- hello world
- hello%20world
- a+b=c
- a%2Bb%3Dc
- café
- caf%C3%A9
- https://x.com/?q=a b
- https%3A%2F%2Fx.com%2F%3Fq%3Da%20b