Debraham: Umlaute in Adresse + Unterschied ä %E4

Beitrag lesen

Wenn ich die Variable genau so übergebe, übersetzt mir der Browser
(Firefox) das "ä" durch ein %E4, ein Leerzeichen durch %20.

Für das ä macht er das, weil deine Seite die Kodierung ISO-8859-1 verwendet. Bei UTF-8 beispielsweise wäre es %C3%A4. Ob es für diese Zeichen eine Pflicht zur Kodierung gibt, weiß ich nicht.

RFC 1738 regelt das URL-Format. Dort heißt es in Abschnitt 2.2, "Octets must be encoded if they have no corresponding graphic character within the US-ASCII coded character set".

Das mit dem Leerzeichen (und einigen anderen Zeichen muss so sein, denn diese haben in URLs eine Sonderbedeutung und müssen umkodiert werden.

Das Leerzeichen hat per se in URLs keine Sonderbedeutung, es ist lediglich eine Fehlerquelle, weil a) der Anwender möglicherweise nicht genau weiß, wo die URL aufhört und b) aufeinanderfolgende Leerzeichen sich nur durch Hinsehen schlecht zählen lassen.

Diese URL-Kodierung stellt aber im Allgemeinen kein Problem dar. Oftmals dekodieren die empfangenden Systeme (z.B. PHP) diese Kodierung bereits

URLs kennen kein Mittel zu Übertragung des bei der Kodierung verwendeten Zeichensatzes, weshalb die Dekodierung auf empfangender Seite im Zweifelsfall ein reines Ratespiel werden kann. Auf eigenen Seiten hat man die automatische Kodierung zwar noch halbwegs unter Kontrolle, aber wenn eigene, gänzlich unkodierte URLs auf fremden Seiten angesprochen werden, kann das in die Hose gehen.

Wie übergeb ich den Inhalt also am besten, oder kann ich das,
auch für Landessprachen ohne Umlaute einfach so lassen?

Es gibt zwei Möglichkeiten:

Die hässliche, aber nicht immer vermeidbare Variante (Besuchereingaben) ist, schon beim Ausgeben der Seite die dort enthaltenen URLs nach dem %-Schema und mit dem intern verwendeten Zeichensatz zu kodieren.

Bei festen URLs umgehe besser gleich Zeichen, die nicht in der US-ASCII-Tabelle drin sind. Es ist kein Beinbruch, wenn Du statt Gästebuch Gaestebuch schreibst (ganz im Gegensatz zur Verwendung von "Gästebuch Forum" statt "Gästebuch-Forum") und der überwiegende Teil der Besucher wird mit "Ueberbaerhuempelbach" weniger Probleme haben als mit "%DCberb%E4rh%FCmpelbach" oder "%C3%9Cberb%C3%A4rh%C3%BCmpelbach".