URL-Encoder
Texte und Sonderzeichen für Webadressen prozentkodieren.
Internetadressen akzeptieren standardmäßig nur eine stark begrenzte Auswahl an Zeichen. Sonderzeichen, Leerzeichen, Umlaute oder strukturelle Trennzeichen müssen daher per Prozentkodierung maskiert werden, da eine Webadresse sonst fehlerhaft aufgelöst wird.
Warum reservierte Zeichen URLs beschädigen können
Einige Zeichen besitzen innerhalb einer URL eine festgelegte Syntaxfunktion. Das Fragezeichen ? leitet Parameter ein, das kaufmännische Und & trennt einzelne Werte voneinander, das Gleichheitszeichen = verbindet Schlüssel mit Werten und die Raute # verweist auf einen Fragmentanker.
Enthält ein Datenwert beispielsweise ein wörtliches kaufmännisches Und, wertet der Webserver dieses Zeichen fälschlicherweise als Start eines neuen URL-Parameters aus. Der eigentliche Wert bricht unerwartet ab. Erst die Maskierung als %26 signalisiert dem System eindeutig, dass das Zeichen als Dateninhalt und nicht als Steuerzeichen zu interpretieren ist.
Texte für Webadressen mit dem URL-Encoder maskieren
- Füg den Text oder Parameterwert in das Eingabefeld ein.
- Klick auf die Schaltfläche zum Kodieren.
- Kopier das erzeugte Ergebnis in deinen Query-String, den Pfadabschnitt oder deine Weiterleitung.
- Kodiere einzelne Parameterwerte separat, anstatt eine komplette Webadresse auf einmal zu verarbeiten.
- Überprüfe bei Bedarf mit einem Decoder-Werkzeug, welche Daten eine bereits kodierte Zeichenkette enthält.
Wichtige Zeichen und ihre Prozentkodierung
| Zeichen | Kodiert | Bedeutung im URL-Kontext |
|---|---|---|
| Leerzeichen | %20 oder + | Führt in vielen Umgebungen zu fehlerhaften Linkaufrufen |
| & | %26 | Wird andernfalls als Trenner zwischen URL-Parametern gewertet |
| ? | %3F | Wird andernfalls als Beginn der Abfrageparameter interpretiert |
| = | %3D | Trennt regulär den Namen eines Parameters von dessen Inhalt |
| # | %23 | Leitet standardmäßig den Fragment-Bezeichner einer Seite ein |
| / | %2F | Dient regulär als Pfadtrenner innerhalb einer Verzeichnisstruktur |
| + | %2B | Wird ohne Maskierung bei der Verarbeitung oft als Leerzeichen gelesen |
Nur Komponenten kodieren statt vollständiger Adressen
Ein häufiges Problem entsteht, wenn eine vollständige Webadresse durch einen Encoder geschickt wird. Dabei werden auch Protokollkennungen wie :// und gewollte Pfadtrenner umgewandelt, wodurch die Zieladresse unbrauchbar wird.
Setze stattdessen einzelne Parameterwerte separat zusammen. In JavaScript kommt hierfür typischerweise encodeURIComponent() für Parameterwerte zum Einsatz, während encodeURI() ausschließlich für vereinzelte Anpassungen an bereits zusammengesetzten Adressen gedacht ist.
Häufige Fragen zum URL-Encoder
Was versteht man unter Prozentkodierung?
Dabei handelt es sich um ein Verfahren, bei dem ein Zeichen durch ein Prozentzeichen gefolgt von seinem hexadezimalen Bytewert dargestellt wird. Ein Leerzeichen ergibt beispielsweise %20, weil 20 dem hexadezimalen ASCII-Wert entspricht.
Wann wird ein Leerzeichen als Pluszeichen kodiert?
Das Pluszeichen + stammt historisch aus der Formulardatenübermittlung innerhalb von Query-Strings. Während %20 universell in allen URL-Abschnitten funktioniert, ist + ausschließlich in Abfrageparametern gültig.
Worin liegt der Unterschied zwischen encodeURIComponent und encodeURI?
Die Funktion encodeURIComponent maskiert auch reservierte Steuerzeichen und eignet sich ideal für Parameterinhalte. Die Funktion encodeURI belässt strukturelle Trennzeichen intakt und dient nur zum Bereinigen unzulässiger Zeichen in einer Gesamtereadresse.
Wie werden Sonderzeichen und Umlaute umgewandelt?
Solche Zeichen werden zunächst in ihre jeweiligen UTF-8-Bytes zerlegt. Jedes dieser Bytes wird anschließend einzeln prozentkodiert, weshalb Umlaute oder Sonderzeichen meist als Kombination aus mehreren Prozentsequenzen erscheinen.
Welche Probleme entstehen durch doppelte Kodierung?
Wird ein bereits kodierter Text erneut verarbeitet, wandelt das System das Prozentzeichen von %20 zu %2520 um. Beim Auslesen dekodiert der Server die Eingabe nur einmal und liefert %20 als Textinhalt aus.