URL-Kodierung
Kodieren Sie Text, der in eine Webadresse soll, oder machen Sie aus einer kodierten Adresse lesbaren Text.
0 Zeichen · 0 Bytes
Ergebnis
Als Einzelteil werden auch Schrägstrich und Fragezeichen kodiert. Ohne Haken bleibt der Aufbau der Adresse erhalten, und nur unerlaubte Zeichen werden kodiert.
So funktioniert es
Webadressen dürfen nur einen begrenzten Satz Zeichen enthalten. Alles andere wird als Prozentzeichen gefolgt vom hexadezimalen Wert des Zeichens geschrieben, und deshalb wird aus einem Leerzeichen %20.
Der Unterschied zwischen den beiden Modi ist, was als Struktur gilt. Wenn Sie ein Einzelteil kodieren, werden auch Schrägstrich, Fragezeichen und Gleichheitszeichen kodiert, weil sie sonst als Teile der Adresse gelesen würden.
Wenn Sie eine ganze Adresse kodieren, bleiben diese Zeichen stehen, damit der Aufbau der Adresse erhalten bleibt. Diesen Modus nehmen Sie für eine fertige Adresse, die nur einzelne Zeichen enthält, die kodiert werden müssen.
Wählen Sie bei einem Parameter den falschen Modus, kann der Empfänger den Wert als mehrere Parameter lesen. Soll ein Wert hinter ein Gleichheitszeichen, gehört er fast immer als Einzelteil kodiert.
Das Pluszeichen ist eine Falle: Im Abfrageteil einer Adresse bedeutet Plus historisch ein Leerzeichen, im Pfad dagegen ein echtes Pluszeichen.
Die Funktionen hinter den Modi
Als Einzelteil kodiert das Werkzeug mit den JavaScript-Funktionen encodeURIComponent und decodeURIComponent, als ganze Adresse mit encodeURI und decodeURI, alle vier im ECMAScript-Standard festgelegt. Jedes zu kodierende Zeichen wird zuerst in UTF-8 umgewandelt, und jedes Byte wird als Prozentzeichen mit zwei Hexadezimalziffern geschrieben. Als Einzelteil wird Kaffee & Kuchen 5 € deshalb zu Kaffee%20%26%20Kuchen%205%20%E2%82%AC, wobei das Eurozeichen drei Bytes belegt. Als ganze Adresse bleibt das Und-Zeichen stehen: Kaffee%20&%20Kuchen%205%20%E2%82%AC. Ein Zeichen, das sich nicht in UTF-8 schreiben lässt, etwa eine einzelne Hälfte eines Surrogatpaars nach einem missglückten Kopieren, ergibt eine Fehlermeldung statt eines Ergebnisses.
Zeichen, die nie kodiert werden
ECMAScript lässt in beiden Modi die Buchstaben A bis Z und a bis z, die Ziffern, Unterstrich, Bindestrich, Punkt, Ausrufezeichen, Tilde, Sternchen, Apostroph und runde Klammern unkodiert. RFC 3986 zählt nur Bindestrich, Punkt, Unterstrich und Tilde zu den nicht reservierten Zeichen; Ausrufezeichen, Apostroph, Klammern und Sternchen gehören zu den reservierten Trennzeichen und können in manchen Adressen eine Bedeutung tragen.
Als ganze Adresse bleiben zusätzlich Semikolon, Schrägstrich, Fragezeichen, Doppelpunkt, At-Zeichen, Und-Zeichen, Gleichheitszeichen, Plus, Dollar, Komma und Raute stehen. Eckige Klammern werden dagegen kodiert, eine IPv6-Adresse in einer URL wie http://[::1]:8080/ wird also zu http://%5B::1%5D:8080/.
Pluszeichen und Formulare
Formulare werden als application/x-www-form-urlencoded kodiert, wobei der URL Standard der WHATWG ein Leerzeichen als Pluszeichen schreibt und zusätzlich Ausrufezeichen, Apostroph, Klammern und Tilde kodiert. Das Werkzeug schreibt immer %20, und beim Dekodieren wird ein Plus nicht zum Leerzeichen: a+b bleibt a+b. Stammt der Text aus einem Formular, ersetzen Sie die Pluszeichen zuerst durch Leerzeichen.
Fehler beim Dekodieren
Dekodieren setzt gültiges UTF-8 voraus. %FC, das in der älteren Kodierung Latin-1 für ü steht, ergibt die Fehlermeldung, während %C3%BC zu ü wird. Ein Prozentzeichen, auf das keine zwei Hexadezimalziffern folgen, wie in a%zz, ist ebenfalls ein Fehler. Als ganze Adresse bleiben kodierte Trennzeichen stehen: a%2Fb bleibt a%2Fb, weil ein dekodierter Schrägstrich den Aufbau der Adresse ändern würde.