Über URL-Kodierung
URL-Kodierung, auch bekannt als Prozent-Kodierung, ist ein Mechanismus zur Kodierung von Informationen in einem Uniform Resource Identifier (URI). Es wird verwendet, um Zeichen, die in einer URL nicht erlaubt sind, in ein Format zu konvertieren, das über das Internet übertragen werden kann. Diese Kodierung ersetzt unsichere ASCII-Zeichen durch ein "%" gefolgt von zwei hexadezimalen Ziffern.
Häufige Anwendungen der URL-Kodierung
- Formatierung von Query-Strings in URLs
- Senden von Formulardaten über HTTP-Anfragen (application/x-www-form-urlencoded)
- Erstellen gültiger URLs mit Sonderzeichen oder Leerzeichen
- Kodierung von Nicht-ASCII-Zeichen in URLs
- Übergabe komplexer Parameter in APIs und Webdiensten
Wie URL-Kodierung funktioniert
URL-Kodierung folgt diesen Prinzipien:
- Alphanumerische Zeichen (A-Z, a-z, 0-9) bleiben unverändert
- Sonderzeichen wie Leerzeichen, ?, &, =, %, + werden in ihre prozent-kodierten Äquivalente umgewandelt
- Jedes Byte eines UTF-8-kodierten Zeichens wird separat prozent-kodiert
- Ein Leerzeichen kann als "%20" oder "+" (in Query-Parametern) kodiert werden
- Reservierte Zeichen wie /, :, ?, #, [ haben besondere Bedeutungen in URLs und können je nach Kontext unterschiedlich behandelt werden
encodeURI vs encodeURIComponent
JavaScript bietet zwei Funktionen für URL-Kodierung:
- encodeURI: Kodiert eine vollständige URI und behält Zeichen bei, die Teil der URI-Syntax sind (wie /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Kodiert eine URI-Komponente (wie einen Query-Parameter-Wert) und kodiert mehr Zeichen, einschließlich solcher mit besonderer Bedeutung in einer URI
In den meisten Fällen bei der Kodierung von Benutzereingaben oder Query-Parametern ist encodeURIComponent()
die sicherere Option, da sie sicherstellt, dass alle potenziell problematischen Zeichen ordnungsgemäß kodiert werden.
URL-Kodierung für internationale Zeichen
Moderne Browser kodieren Nicht-ASCII-Zeichen mit UTF-8-Kodierung und kodieren dann jedes Byte prozentual. Dies stellt sicher, dass internationale Zeichen, Emojis und andere Unicode-Symbole ordnungsgemäß in URLs eingeschlossen werden können. Zum Beispiel wird das japanische Zeichen "日" zuerst UTF-8-kodiert als drei Bytes (E6 97 A5) und dann prozent-kodiert als "%E6%97%A5".
Beispiele
Klartext | URL-kodiert |
---|---|
Hallo Welt | Hallo%20Welt |
https://beispiel.de/?q=suchbegriff | https%3A%2F%2Fbeispiel.de%2F%3Fq%3Dsuchbegriff |
50% Rabatt Verkauf! | 50%25%20Rabatt%20Verkauf%21 |
Müller & Söhne GmbH | M%C3%BCller%20%26%20S%C3%B6hne%20GmbH |