Inhaltsverzeichnis

Seltsame Zeichen

“Warum werden auf meiner Seite Umlaute und Sonderzeichen falsch dargestellt?”

Warum?

Nicht selten gibt es Themen auf php.de wie diese. Probleme mit Umlauten und anderen Sonderzeichen, die fehlerhaft dargestellt werden. In folgenden werden diese Situationen mit Hintergründen und Lösungen dazu, basierend auf den beiden Zeichenkodierungen UTF-8 (Unicode) und ISO 8859-1 (Latin-1), gezeigt.

Situation 1

Wenn ein Dokument als Unicode (UTF-8) abgespeichert wurde, aber als ISO 8859-1 interpretiert wird, geschieht folgendes:

Erwartete Ausgabe: ä  ö  ü
Wirkliche Ausgabe: ä ö ü

Das ä wurde binär gesehen als 11000011 10100100 gespeichert. Diese beiden Bytes gehören laut UTF-8 zusammen, werden in ISO 8859-1 allerdings auseinander genommen. Folglich wird aus 11000011 ein à und aus 10100100 ein ¤-Zeichen.

Was zu beachten ist, damit es zu keiner solchen Fehlinterpretation kommt, ist etwas weiter unten angeführt.

Situation 2

Wenn die Umlaute als Fragezeichen dargestellt werden, dann wird ein als ISO 8859-1 kodiertes Dokument als UTF-8 interpretiert. Dies stellt das Gegenstück zur oben genannten Situation dar.

Erwartete Ausgabe: ä  ö  ü
Wirkliche Ausgabe: � � �

Mit anderen Worten wurde hier ein ä als 11100100 gespeichert. In UTF-8 ist dieses Byte jedoch ungültig, wird also nicht angezeigt (ignoriert) bzw. als ? oder dargestellt.

Was zu beachten ist, damit es zu keiner solchen Fehlinterpretation kommt, ist nachfolgend angeführt.

Lösung: Nutze konsequent UTF-8

Checkliste für die durchgängige und korrekte Verwendung von UTF-8