araç köşesi

URL kodieren und dekodieren

Adressen und Formularwerte in Prozentkodierung umwandeln oder wieder lesbar machen

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

Fügen Sie den Text in das linke Feld ein; jede Zeile wird für sich behandelt, eine Liste von Adressen läuft also in einem Durchgang durch. Wählen Sie zuerst die Richtung und dann den Umfang — diese zweite Entscheidung bestimmt, ob das Ergebnis brauchbar ist. Die Komponente kodiert einen einzelnen Wert: Doppelpunkt, Schrägstrich, Fragezeichen, kaufmännisches Und und Gleichheitszeichen werden mitkodiert, denn innerhalb eines Wertes ist ein Schrägstrich Inhalt und kein Pfadtrenner. Die ganze Adresse behandelt den Text als vollständige URL und lässt diese Trennzeichen unberührt; umgewandelt werden nur unsichere Zeichen wie Leerzeichen und Umlaute. Beim Dekodieren gilt dieselbe Unterscheidung. Findet sich eine kaputte Prozentfolge — etwa %ZZ oder ein abgebrochenes %A am Zeilenende —, erfahren Sie, in welcher Zeile und an welcher Stelle sie steht; eine formal gültige Folge, die kein zulässiges UTF-8-Zeichen ergibt, wird getrennt gemeldet, weil dahinter eine andere Ursache steckt. Das Ergebnis lässt sich mit einem Klick kopieren oder als Textdatei herunterladen.

Dieses Werkzeug ist auch als url kodieren, url dekodieren, url encode online, url encoder deutsch, sonderzeichen in url bekannt.

Was ist Prozentkodierung?

Die Prozentkodierung stellt Zeichen, die in einer Adresse nicht unmittelbar stehen dürfen, durch ein Prozentzeichen und zwei hexadezimale Stellen dar: aus einem Leerzeichen wird %20, aus einem Fragezeichen %3F. Der Adressstandard lässt nur einen begrenzten Zeichenvorrat zu, weil die übrigen Zeichen entweder als Trennzeichen wirken (/, ?, &, =) oder von verschiedenen Systemen verschieden ausgelegt werden. Kodiert werden dabei nicht Zeichen, sondern Bytes: der Text wird zuerst nach UTF-8 umgewandelt, jedes Byte erhält seine eigene Folge. Deshalb ergibt ein Umlaut zwei Folgen und eine kodierte Adresse wirkt länger als der Ausgangstext.

Was ist Abfragezeichenfolge (Query-String)?

Die Abfragezeichenfolge ist der Teil einer Adresse hinter dem Fragezeichen; sie trägt Parameter an den Server, im Muster ?q=plan&seite=2. Das kaufmännische Und trennt die Parameter voneinander, das Gleichheitszeichen trennt den Namen vom Wert. Weil beide Zeichen eine tragende Rolle haben, müssen sie kodiert werden, sobald sie innerhalb eines Wertes vorkommen; sonst liest der Server aus einem Parameter zwei und die Suche bleibt leer. Genau daher rühren die beiden Umfänge dieses Werkzeugs: Abfragewerte gehören in die Komponente, eine vollständige Adresse in die ganze Adresse.

Was ist der Unterschied zwischen Komponente und ganzer Adresse?

Beide wenden dieselbe Prozentkodierung an; sie trennen sich in der Frage, was mit den Trennzeichen geschieht. Die Komponente kennt gar keine Adressen: sie sieht Text und kodiert jedes unsichere Zeichen einschließlich : / ? # & =, denn dieser Text soll TEIL einer Adresse werden, und ein Schrägstrich darin ist Inhalt und kein Pfadtrenner. Die ganze Adresse setzt voraus, dass bereits eine Adresse vorliegt, behandelt die Trennzeichen als Struktur und erhält sie; umgewandelt werden nur unsichere Zeichen wie Leerzeichen und Umlaute. Praktisch heißt das: Formularwerte und Abfrageparameter über die Komponente, eine vorhandene, reparaturbedürftige Adresse über die ganze Adresse. Wer beides vertauscht, macht aus einer Adresse entweder unbrauchbaren Text oder lässt ein Trennzeichen mitten im Wert stehen und zerlegt damit seine Daten.

Der häufigste Fehler: eine ganze Adresse als Komponente kodieren

Schicken Sie eine vollständige Adresse durch die Komponente, wird aus https://beispiel.de/pfad die Zeichenkette https%3A%2F%2Fbeispiel.de%2Fpfad. Diese Ausgabe ist nicht kaputt — sie ist nur keine Adresse mehr, sondern ein Wert, der eine Adresse als Text transportiert. In der Adresszeile eines Browsers öffnet sich damit nichts.

Die Regel ist kurz: kodieren Sie einen TEIL einer Adresse oder das GANZE? Der Suchbegriff münchen plan, der in einen Parameter q soll, ist ein Fall für die Komponente. Eine fertige Adresse, die Leerzeichen enthält und wieder gültig werden soll, ist ein Fall für die ganze Adresse.

Welche Zeichen sich ändern und welche bleiben

In beiden Umfängen bleiben Buchstaben, Ziffern und die Zeichen - _ . ! ~ * ' ( ) unverändert, ein Leerzeichen wird immer zu %20. Alles außerhalb des reinen ASCII-Bereichs wird zuerst in seine UTF-8-Bytes zerlegt, und jedes Byte bekommt eine eigene Prozentfolge: aus ü wird deshalb %C3%BC, aus ß wird %C3%9F. Dass eine kodierte Adresse länger aussieht als erwartet, ist der Normalfall und kein Anzeichen für einen Fehler.

  • In der Komponente kodiert: : / ? # [ ] @ ! $ & ' ( ) * + , ; = — also nahezu alles
  • In der ganzen Adresse erhalten: : / ? # [ ] @ & = + $ , ;
  • Enthält ein Abfragewert selbst & oder =, ist die Komponente zwingend; sonst zerlegt der Server einen Parameter in zwei
  • Auch ein Dateiname mit Schrägstrich darin gehört in die Komponente

Was der Browser zeigt, ist nicht das, was er sendet

Moderne Browser lösen Prozentfolgen in der Adresszeile auf und zeigen sie lesbar an; beispiel.de/münchen-plan sieht deshalb sauber aus, obwohl die Anfrage den Server in kodierter Form erreicht hat. Kopieren Sie denselben Link in eine E-Mail oder eine Nachricht, erscheint meist wieder die lange kodierte Fassung — der Link hat sich nicht geändert, nur seine Darstellung.

Zum Verstehen eines scheinbar kaputten Links ist die Richtung Dekodieren der kürzeste Weg: fügen Sie die unleserliche Adresse ein und lesen Sie ab, welcher Parameter was trägt. Für den Domainnamen gelten andere Regeln — Umlautdomains wie müller.de werden über ein eigenes Verfahren namens Punycode abgebildet, und dieses Werkzeug rührt den Domainteil nicht an.

Tabelle der Prozentkodierung: was aus welchem Zeichen wird

Die folgenden Werte stehen im Adressstandard RFC 3986 und sind überall gleich: Ein Zeichen wird als Prozentzeichen mit zwei hexadezimalen Stellen geschrieben, die seinen UTF-8-Wert angeben. Aus einem Leerzeichen wird %20, weil eine Adresse für ein Leerzeichen überhaupt keinen Platz hat; die übrigen Zeichen werden kodiert, weil sie Struktur tragen — ein rohes Und-Zeichen in einem Abfragewert sagt dem Server, dass dort ein neuer Parameter beginnt.

Die Liste zeigt, was der Umfang "Komponente" erzeugt. Im Umfang "ganze Adresse" bleiben dieselben Zeichen unverändert, weil sie dort den Aufbau der Adresse bilden und nicht in einem Wert stecken; welcher Umfang wohin gehört, steht im Abschnitt darüber. Buchstaben, Ziffern und vier Zeichen — Bindestrich, Punkt, Unterstrich, Tilde — gelten im Standard als "nicht reserviert" und werden in keinem Umfang kodiert.

Also: Die Tabelle ist keine Gedächtnisübung, sondern eine Prüfliste. Kommt ein Link kaputt an, finden Sie hier das Zeichen, das unkodiert geblieben oder falsch dekodiert worden ist.

  • Leerzeichen → %20
  • ! → %21
  • " (Anführungszeichen) → %22
  • # → %23
  • $ → %24
  • % (das Prozentzeichen selbst) → %25
  • & → %26
  • ' (Apostroph) → %27
  • ( → %28 und ) → %29
  • * → %2A
  • + → %2B
  • , (Komma) → %2C
  • / → %2F
  • : → %3A
  • ; → %3B
  • = → %3D
  • ? → %3F
  • @ → %40
  • [ → %5B und ] → %5D
  • Zeilenumbruch → %0A, Tabulator → %09
  • Nie kodiert: A-Z, a-z, 0-9 und vier Zeichen — Bindestrich ( - ), Punkt ( . ), Unterstrich ( _ ), Tilde ( ~ )
  • Umlaute belegen zwei Bytes und ergeben zwei Folgen: ä → %C3%A4, ö → %C3%B6, ü → %C3%BC, ß → %C3%9F

Häufige Fragen

Wird ein Leerzeichen zu %20 oder zu einem Pluszeichen?

Im Pfadteil einer Adresse wird ein Leerzeichen immer zu %20. Das Pluszeichen gilt nur in der Abfragezeichenfolge, die ein HTML-Formular absendet, als Leerzeichen; das ist eine alte Übereinkunft aus diesem einen Zusammenhang. Dieses Werkzeug erzeugt in beiden Umfängen %20, weil %20 überall richtig gelesen wird.

Darf eine Adresse Umlaute enthalten?

Im Pfad und in der Abfrage ja; dort werden sie als UTF-8-Bytes in Prozentfolgen übertragen, aus ü wird %C3%BC. Der Domainname folgt anderen Regeln: dort gilt das Verfahren Punycode, und dieses Werkzeug lässt den Domainteil unverändert.

Was passiert, wenn ich eine Adresse zweimal kodiere?

Dann wird das Prozentzeichen selbst kodiert und aus %20 wird %2520. Das ist die klassische Ursache für einen kaputten Link. Wenn Sie unsicher sind, lassen Sie zuerst die Richtung Dekodieren laufen: enthält die Ausgabe danach immer noch Prozentfolgen, war der Text doppelt kodiert.

Werden die eingefügten Adressen irgendwohin gesendet?

Nein. Kodieren und Dekodieren laufen im Browser, auch eine Adresse mit Sitzungsschlüssel oder persönlichen Parametern verlässt diese Seite nicht.

Wie wird das Prozentzeichen selbst kodiert?

Als %25. Das ist keine Ausnahme, sondern der Kern der Regel: Das Prozentzeichen eröffnet eine Escape-Folge, also muss es kodiert werden, wo es als gewöhnlicher Text vorkommt — sonst werden die beiden folgenden Zeichen für hexadezimale Stellen gehalten. Beim Dekodieren gilt es umgekehrt: Aus einer %25-Folge wird wieder ein einzelnes Prozentzeichen.