Umlaute richtig darstellen
Ein Workaround für die Lösung des Umlauteproblems
Die Ursache für das Umlauteproblem liegt in der Zeichenkodierung. Für jede Sprache gibt es eine Kodierung für deutsch gleich mehrere. Allerdings hat sich UTF-8 durchgesetzt und deshalb will ich in diesem Workaround auch auf diese Codierung eingehen.
Zunächst muss dem Browser mitgeteilt werden, wie die Website kodiert ist, mit der wir ihn gleich beliefern. Das geschieht im head und sollte in etwa so aussehen:
Dein Seitentitel
Im zweiten Schritt geht es darum, die Daten mit UTF-8 zur Verfügung zu stellen. Diese Daten kommen von einer MySQL-Datenbank. Die sollte komplett auf utf8_general_ci eingstellt sein. Das beginnt bei der Datenbank an sich (z.B. PHPMyAdmin > Operationen), dann jede einzelne Tabelle und schließlich jedes Feld, das Text enthalten kann.
Nun sollte man meinen, das war's, aber dem ist leider noch nicht ganz so. Oft erlebt man, dass die lokale XAMPP-Installation alles wie gewünscht macht, dann überträgt man das Projekt zum XAMPP-System des Kunden oder auf einen Web-Server und schon hat man sie wieder, die dämlichen Rauten mit Fragezeichen oder sonstigen kryptischen Zeichen.
Wie kommt's? Es kommt darauf an, wie der Datenbank-Engine die Daten kodiert. Das hängt von der jeweiligen Installation ab.
Man kann dies mit einem sehr wirkungsvollen Trick festlegen.
Wenn du zum Öffnen der Datenbank ein kleines Script verwendest, das du in jede Seite einbindest, dann sieht das z.B. so aus:
connect_errno) {
die("Die Verbindung zur Datenbank klappte leider nicht.");
}
// hier wird der controller angewiesen, utf8 zu verwenden:
$mysqli->query("set names utf8");
?>
Und zum Schluss sorgen wir noch dafür, dass die Daten bei Übermittlung im richtigen Format ankommen.
Damit sind alle Fehlerquellen ausgeräumt und die deutschen Umlaute werden fehlerfrei angezeigt.