Zum Inhalt springen

URL-Encoding

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 24. Dezember 2006 um 11:00 Uhr durch 89.50.120.96 (Diskussion) (Schönheitskorrekturen und Verlinkung). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die URL-Kodierung (engl. URL encoding) ist ein Mechanismus, um Informationen in einer URL unter bestimmten Gegebenheiten zu kodieren. Die Forderung nach einer solchen Möglichkeit ergibt sich dadurch, dass einerseits einige Informationen ansonsten nicht in einer URL darstellbar wären und andererseits bestimmte Zeichen in einer URL besondere Bedeutungen haben, aber auch in einem Kontext auftreten können, in dem sie eben diese spezielle Bedeutung nicht haben sollen. RFC 3986 definiert einen Standard, wie eine URI (und damit auch eine URL) syntaktisch aufgebaut sein sollte und unter welchen Bedingungen die URL-Kodierung Anwendung findet.

Reservierte und nicht-reservierte Zeichen

URLs können quasi beliebig komplex sein:

http://joe@www.example.net:8080/index.html?cookie=y&session=A54C6FE2#info

Bestimmte Zeichen haben innerhalb dieses Ausdrucks eine besondere Bedeutung, leiten u.a. die einzelnen Segmente der URL ein und separieren sie von anderen. Bei einem HTTP-Zugriff beispielsweise

  • leitet das Fragezeichen "?" den Datenteil ("Query-String") der URL ein,
  • trennt das Kaufmanns-Und "&" URL-Parameter voneinander,
  • separiert das Gleichheitszeichen "=" einen Parameternamen von seinem -wert,
  • folgt dem Zeichen "#" der Name eines Dokumentenankers.

Weitere Zeichen haben bestimmte Bedeutungen im Dokumentenpfad. Insgesamt gelten folgende Zeichen als reserviert:

% : / ? # [ ] @ ! $ & ' ( ) * + , ; =

Folgende Zeichen(gruppen) sind nicht reserviert:

%-Kodierung

Eine URL besteht aus den genannten reservierten und nicht-reservierten Zeichen; andere Zeichen dürfen in ihr nicht vorkommen. Es besteht jedoch prinzipiell der Bedarf, in URLs beliebige Bytefolgen darstellen zu können, also sämtliche Zeichencodes zwischen 0 und 255 in ihr verwenden zu können. Zudem muss eine Möglichkeit existieren, reservierte Zeichen in einer URL derart schreiben zu können, dass sie ihre speziellen Bedeutungen verlieren ("Escaping", "Quoting").

Der Mechanismus der %-Kodierung trägt beiden Forderungen Rechnung. Ihm zugrunde liegt ein Kodierungsverfahren, welches jedem Zeichencode zwischen 0 und 255 eine 3-stellige Zeichenkombination zuordnet, die mit dem Zeichen "%" eingeleitet wird, dem die zweiziffrige hexadezimale Darstellung des Zeichencodes folgt.

Ein reserviertes Zeichen ist in einer URL in %-kodierter Form zu schreiben, wenn es an der Stelle, an der es sich befindet, eine besondere Bedeutung hat, diese aber im vorliegenden Kontext nicht haben soll. Nicht-reservierte Zeichen können %-kodiert werden, sollten es aber nicht. Bei anderen Zeichen (u.a. Binärdaten) besteht meist gar keine andere Möglichkeit, als sie in einer URL in %-kodierter Form darzustellen.

In der Praxis wird der Mechanismus nicht immer einheitlich angewendet. Oft genug ist in URLs der Code "%7E" zu sehen, obwohl die Tilde ein nicht-reserviertes Zeichen ohne jegliche besondere Bedeutung ist.

Beispiel:

Wird US-ASCII zugrunde gelegt, dann ist dem Zeichen "#" der Zeichencode 35 zugeordnet, welcher in hexadezimaler Darstellung dem Ausdruck "23" entspricht. Insofern stellt der Ausdruck "%23" die %-kodierte Form des Zeichens "#" dar.

Die Interpretation von

http://www.example.net/index.html?session=A54C6FE2#info

ist eindeutig: Hier wurden ein URL-Parameter namens session definiert, dem der Wert A54C6FE2 zugewiesen ist, sowie ein Dokumentenanker namens info angegeben. Das Zeichen "#" hat in dem vorliegenden Kontext die besondere Bedeutung, dass es den Namen eines Dokumentenankers einleitet. Soll es diese Bedeutung verlieren, d.h. soll dem URL-Parameter session der Wert A54C6FE2#info zugewiesen werden, so muss das Zeichen "#" in %-kodierter Form in der URL stehen:

http://www.example.net/index.html?session=A54C6FE2%23info

MIME-Typ

Mit dem MIME-Typ „application/x-www-form-urlencoded“ können URL-kodierte Informationen gekennzeichnet werden. Bei der Übermittlung von Web-Formularangaben mittels der POST-Methode wird beispielsweise dieser MIME-Typ als Inhaltstyp (engl. Content-Type) angegeben.

  • RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax)