So funktioniert’s
- 1Wähle „Kodieren“ oder „Dekodieren“ und tippe oder füge deinen Text ein – das Ergebnis aktualisiert sich während der Eingabe.
- 2Wähle beim Kodieren die passende Art: „Komponente“ für einen einzelnen Wert wie einen Suchbegriff, „Vollständige URL“ für eine komplette Adresse oder „Formulardaten“, um Leerzeichen als
+zu schreiben. - 3Aktiviere beim Dekodieren eines Query-Strings oder von Formulardaten „+ als Leerzeichen behandeln“. Enthält der Text eine fehlerhafte Escape-Sequenz, markiert das Tool genau die Stelle.
- 4Um einen Link zu untersuchen, füge ihn unter „URL zerlegen“ ein – du siehst Host, Port, Pfad, Fragment und alle Query-Parameter, dekodiert.
Was ist URL-Kodierung?
Eine URL darf nur eine begrenzte Menge an ASCII-Zeichen enthalten. Alles andere – Leerzeichen, Buchstaben mit Akzenten oder Umlauten, Emojis und Zeichen mit besonderer Bedeutung wie &, =, ? oder # – muss prozentkodiert werden: Jedes Byte der UTF-8-Form des Zeichens wird als % gefolgt von zwei Hexadezimalziffern geschrieben. Aus einem Leerzeichen wird %20, aus é wird %C3%A9 und aus € wird %E2%82%AC.
Die Kodierung verhindert, dass Daten mit der Struktur der URL verwechselt werden. Enthält ein Suchbegriff ein & und du lässt es stehen, teilt der Server den Begriff in zwei Parameter auf; als %26 geschrieben, bleibt es Teil des Werts.
Komponente, vollständige URL oder Formulardaten?
Die Komponenten-Kodierung – encodeURIComponent in JavaScript – kodiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ). Verwende sie für jedes Stück, das du in eine URL einsetzt: einen Query-Wert, ein Pfadsegment, ein Weiterleitungsziel.
Die Kodierung vollständiger URLs – encodeURI – lässt die Zeichen, die eine URL strukturieren, etwa : / ? # & =, unangetastet und kodiert nur Leerzeichen, Nicht-ASCII-Zeichen und unsichere Symbole. Verwende sie für eine ganze, bereits korrekt zusammengesetzte URL – nie für einzelne Werte.
Die Formular-Kodierung (application/x-www-form-urlencoded) senden Browser, wenn du ein HTML-Formular abschickst, und sie ist das, was URLSearchParams erzeugt. Diese Kodierung funktioniert wie die Komponenten-Kodierung, nur dass Leerzeichen zu + werden. Deshalb bedeutet + in den meisten Query-Strings ein Leerzeichen – und deshalb muss ein echtes Pluszeichen als %2B geschrieben werden.
Warum das Dekodieren scheitern kann
Auf ein % müssen immer zwei Hexadezimalziffern folgen. Text wie 100% sure ist keine gültige Prozentkodierung: Das Prozentzeichen selbst hätte als %25 geschrieben werden müssen.
Die Bytes hinter den Escape-Sequenzen müssen außerdem gültiges UTF-8 ergeben. caf%E9 ist die Art, wie ältere Systeme „café“ in Windows-1252 oder ISO-8859-1 kodiert haben – in UTF-8 ist é gleich %C3%A9. Der Decoder markiert genau die Sequenz, an der es scheitert, sodass du erkennst, ob der Text abgeschnitten oder mit einem anderen Zeichensatz kodiert wurde.
Häufige Fragen
Was bedeutet %20 in einer URL?
%20 ist ein kodiertes Leerzeichen. Leerzeichen sind in URLs nicht erlaubt, daher werden sie als %20 geschrieben – oder in Query-Strings und Formulardaten als +. Beides wird zu einem normalen Leerzeichen dekodiert.
Sollten Leerzeichen als %20 oder als + kodiert werden?
Im Pfad immer als %20. Im Query-String funktioniert in der Praxis beides, weil Server Formulardaten mit + als Leerzeichen dekodieren. %20 ist überall sicher, während + nur in Query-Strings und Formulardaten ein Leerzeichen bedeutet.
Was ist der Unterschied zwischen encodeURI und encodeURIComponent?
encodeURIComponent kodiert auch reservierte Zeichen wie / ? & = # und ist daher richtig für einzelne Werte. encodeURI lässt sie in Ruhe, damit eine vollständige URL funktionsfähig bleibt. encodeURI auf einen Query-Wert anzuwenden, ist ein häufiger Fehler: Ein & im Wert teilt ihn dann in zwei Parameter auf.
Warum bekomme ich den Fehler „URI malformed“?
decodeURIComponent in JavaScript wirft ihn, wenn auf ein % keine zwei Hexadezimalziffern folgen oder die kodierten Bytes kein gültiges UTF-8 ergeben. Füge den Text oben in den Decoder ein – er zeigt dir, welche Sequenz den Fehler verursacht und an welcher Position.
Welche Zeichen müssen in einer URL nicht kodiert werden?
Die Buchstaben A–Z und a–z, die Ziffern 0–9 sowie - . _ ~ müssen nie kodiert werden. Reservierte Zeichen wie : / ? # [ ] @ ! $ & ' ( ) * + , ; = sind dort erlaubt, wo sie ihre besondere Bedeutung haben, müssen aber kodiert werden, wenn sie Teil der Daten sind.