IE bevorzugt UTF-7-Codierung

Neuere Versionen des Internet Explorers interpretieren Zeichensequenzen in einem HTML-Dokument, die aus einem + und einem Zeichen des Base64-Alphabets bestehen (z. B. +1 oder internationale Telefonnummern), nicht als ASCII, sondern als UTF-7.

Dazu müssen folgende Voraussetzungen gegeben sein:

Sie können den Effekt an einer Testseite beobachten, die einen Absatz

<p>+APw-</p>

enthält. Diese Zeichenkette bedeutet ASCII-codiert nichts anderes als eben +APw-, UTF-7-codiert aber ü. Der Internet Explorer geht im Gegensatz zu sämtlichen anderen Browsern tatsächlich von UTF-7-Codierung aus:

Screenshot eines Internet-Explorer-Fensters.

Interessanterweise läßt sich diese Codierung manuell überhaupt nicht auswählen. Der IE benutzt sie nur, wenn das Dokument mit einem UTF-7-BOM (+/v8-) beginnt oder diese Codierung durch den HTTP-Content-Type-Header bzw. das entsprechenden meta-Element festgelegt wird.

Die automatische Erkennung von UTF-7 stellt auch ein ernstes Sicherheitsproblem dar. Denn IE erkennt in

+ADw-script type+AD0-'text/javascript'+AD4-alert(+ACI-Foo+ACEAIg-)+ADsAPA-/script+AD4-

durchaus ein script-Element und führt den enthaltenen Code aus. Filter, die mit regulären Ausdrücken nach <script o.ä. suchen, sind hier wirkungslos.

Von einem Bug sollte man hier freilich nicht sprechen. Die HTML-Spezifikation stellt unmißverständlich fest:

Therefore, user agents must not assume any default value for the "charset" parameter.

In HTML gibt es also – im Gegensatz zu XHTML – keine Standardcodierung, weder ISO-8859-1 noch ASCII. Bei einem Dokument, für das keine Codierung angegeben wird, darf ein Benutzeragent also gleichermaßen ASCII- oder UTF-7-Codierung annehmen. Andererseits muß sich Microsoft fragen lassen, ob die Wahl, die der IE hier trifft, besonders glücklich ist. Es existieren zwar einige wenige UTF-7-codierte Webseiten, aber für die lohnt sich die Heuristik wirklich nicht.

Autoren können dieses Problem – und etliche andere – einfach vermeiden, indem sie stets die Codierung ihrer Dokumente deklarieren. IE-Benutzer können über Ansicht → Codierung eine andere Codierung explizit angeben. Mit Westeuropäisch (Windows) oder Westeuropäisch (ISO) sollten die meisten Dokumente korrekt dargestellt werden. Ansicht → Codierung → Automatische Auswahl kann dann aktiviert bleiben, das ist die empfohlene Einstellung.