URL-Codierung

Einige Zeichen dürfen in einer URL nicht enthalten sein, etwa das Leerzeichen, andere haben hier eine besondere Bedeutung. Bei HTML-Formularen wird das Zeichen = verwendet, um einen Namen von einem Wert zu trennen. In der generischen URI-Syntax wird dieses Problem durch URL-Codierung umgangen, in HTML-Formularen werden stattdessen Zeichen ersetzt.

Leerzeichen in einem String werden entweder mit %20 codiert oder durch ein Pluszeichen (+) ersetzt. Wenn Sie senkrechte Striche (|) als Trennzeichen verwenden, müssen Sie sie mit %7C codieren. Ein Komma in einem String sollte mit %2C codiert werden.

Wir empfehlen, für die automatische Codierung deiner URLs die normalen URL-Erstellungsbibliotheken deiner Plattform zu verwenden, damit die URLs richtig maskiert sind.

Gültige URL erstellen

Es mag den Anschein haben, dass „gültige“ URLs eine Selbstverständlichkeit sind. Das ist jedoch nicht der Fall. So kann beispielsweise eine URL, die in die Adresszeile eines Browsers eingegeben wird, Sonderzeichen wie "上海+中國" enthalten; der Browser muss diese Zeichen vor der Übertragung intern in eine andere Codierung umwandeln. Ebenso ist es möglich, dass Code, der UTF-8-Eingaben erzeugt oder akzeptiert, URLs mit UTF-8-Zeichen als „gültig“ behandelt; diese Zeichen müssten jedoch vor dem Senden an einen Webbrowser ebenfalls umgewandelt werden. Dieser Vorgang wird als URL-Codierung oder Prozentcodierung bezeichnet.

Sonderzeichen

Sonderzeichen müssen umgewandelt werden, da alle URLs der Syntax entsprechen müssen, die in der Spezifikation Uniform Resource Identifier (URI) angegeben ist. Das bedeutet, dass URLs nur einen Teil der ASCII-Zeichen enthalten dürfen: die bekannten alphanumerischen Symbole und einige reservierte Zeichen, die in den URLs als Steuerzeichen dienen. Hier eine Übersicht:

Zulässige Zeichen in URLs
ZeichensatzcharactersVerwendung in der URL
Alphanumerisch b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N N P P R R S T U V W X Y Z 0 1 2 3 4 5 6 5 6 Textstrings, Schemas (http), Portangaben (8080) usw.
Nicht reserviert - _ . ~ Textstrings
Reserviert ! * ' ( ) ; : @ & = + $ , / ? % # [ ] Steuerzeichen und/oder Text

Beachte bei der Generierung einer URL, dass sie nur die in der Tabelle aufgeführten Zeichen enthalten darf. Die Anpassung der URL an diesen Zeichensatz führt in der Regel zu zwei Problemen, nämlich dass Zeichen weggelassen oder ersetzt werden müssen:

  • Die Zeichen, die du verarbeiten möchtest, sind nicht im obigen Zeichensatz enthalten. So müssen beispielsweise Zeichen ausländischer Sprachen, wie 上海+中國, mithilfe der oben angegebenen Zeichen codiert werden. Auch werden Leerzeichen, die innerhalb von URLs nicht zulässig sind, entsprechend den geltenden Konventionen oftmals durch das Zeichen '+' dargestellt.
  • Die Zeichen sind im obigen Zeichensatz als reservierte Zeichen enthalten, müssen aber im ursprünglichen Sinn des Zeichens verwendet werden. So wird beispielsweise ? in URLs für den Beginn eines Abfragestrings verwendet. Falls Sie also den String „? and the Mysterions“ verwenden möchten, müssten Sie das '?' codieren.

Alle Zeichen, die URL-codiert werden müssen, werden mithilfe von '%' und einem zweistelligen Hexadezimalwert codiert, der ihrem UTF-8-Zeichen entspricht. Aus 上海+中國 würde z. B. %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B werden. Und aus ? and the Mysterians würde %3F+and+the+Mysterians oder %3F%20and%20the%20Mysterians werden.

Allgemeine Zeichen, die codiert werden müssen

Folgende häufig vorkommende Zeichen müssen codiert werden:

Unsicheres Zeichen Codierter Wert
Leertaste %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

Die Konvertierung von URLs, die aus Nutzereingaben empfangen werden, kann manchmal Probleme mit sich bringen. Beispielsweise kann ein Nutzer eine Adresse als „5th&Main St.“ eingeben. Im Allgemeinen solltest du die URL aus ihren Teilen erstellen und jede Nutzereingabe wortwörtlich betrachten.

Außerdem sind URLs für alle Google Maps Platform-Webdienste und statischen Web APIs auf 8.192 Zeichen beschränkt. Bei den meisten Diensten wird diese Begrenzung selten erreicht. Beachte jedoch, dass bestimmte Dienste einige Parameter haben, die zu langen URLs führen können.