![]() | |||||||||
Navigation • Home
| Umlaute falsch dargestellt in der Bildergalerie
Werden Umlaute falsch dargestellt, zeigt deine Galerie seltsame Zeichen wie Fragezeichen oder kryptische Buchstabenfolgen, wo eigentlich ein Umlaut stehen sollte. Dahinter steckt fast nie ein Tippfehler, sondern ein Zeichensatz-Problem. Verschiedene Teile deiner Webseite sprechen unterschiedliche Sprachen, wenn es um die Kodierung geht. Bringt man sie auf einen gemeinsamen Stand, verschwindet der Fehler.
Warum Umlaute falsch dargestellt werdenEin Computer speichert Buchstaben als Zahlen. Welche Zahl zu welchem Zeichen gehört, legt der Zeichensatz fest. Verbreitet sind heute UTF-8 und das ältere latin1. Speichert ein Teil deiner Seite einen Umlaut nach UTF-8, ein anderer Teil liest ihn aber als latin1, entsteht Buchstabensalat. Der Umlaut ist nicht verloren, er wird nur falsch übersetzt. Das passiert immer an den Übergängen zwischen Datei, Datenbank und Browser. Umlaute falsch dargestellt: drei Stellen prüfenDamit Umlaute korrekt erscheinen, muss an drei Stellen derselbe Zeichensatz gelten. Die Tabelle zeigt, welche das sind und wie sich ein Fehler dort bemerkbar macht.
Sind feste Texte aus dem Quelltext betroffen, liegt es an der Speicherform der Datei selbst. Erscheinen dagegen nur die Kategorienamen oder Bildtitel falsch, die aus der Datenbank kommen, stimmt die Kodierung der Datenbankverbindung nicht. Zeigt der Browser alles falsch, obwohl die Daten richtig gespeichert sind, fehlt oder stimmt die Angabe im HTML-Kopf nicht. So bringst du alles in EinklangPrüfe die drei Stellen der Reihe nach und sorge dafür, dass überall derselbe Zeichensatz gilt. UTF-8 ist heute die empfohlene Wahl.
Der häufigste Stolperstein ist die Datenbankverbindung. Selbst wenn die Datenbank intern auf UTF-8 steht, muss das Script nach dem Verbinden den Zeichensatz der Verbindung ausdrücklich festlegen. Fehlt dieser Schritt, werden korrekt gespeicherte Umlaute beim Auslesen falsch übersetzt, obwohl alles richtig aussieht. Was bei bereits falschen Daten giltSind Titel oder Kategorien schon mit kaputten Zeichen gespeichert, reicht die Umstellung der Verbindung allein nicht, da der Schaden bereits in der Datenbank steckt. In diesem Fall korrigierst du die betroffenen Einträge am besten von Hand im Verwaltungsbereich, nachdem die Kodierung überall stimmt. Lege vorher eine Sicherung der Datenbank an, falls eine größere Korrektur nötig wird. Achte künftig darauf, neue Inhalte erst einzupflegen, wenn alle drei Stellen auf demselben Zeichensatz stehen. Umlaute falsch dargestellt künftig vermeidenHast du die drei Stellen einmal in Einklang gebracht, bleibt es meist ruhig, solange du an der Kodierung nichts mehr änderst. Ein paar Gewohnheiten halten Umlaute dauerhaft sauber. Diese Punkte beugen einem Rückfall vor.
So bleibt der einmal erreichte Zustand erhalten, und du musst die Suche nach der Ursache nicht bei jedem neuen Inhalt wiederholen. Tauchen die seltsamen Zeichen später doch wieder auf, weißt du nun, an welchen drei Stellen du zuerst nachsiehst, und behebst den Fehler in wenigen Minuten. Häufige FragenRund um den Zeichensatz tauchen typische Fragen auf, je nachdem, ob nur einzelne Texte oder die ganze Seite betroffen sind. Mit welcher Codezeile stelle ich die Datenbankverbindung auf den richtigen Zeichensatz?Setze direkt nach dem Verbinden mysqli_set_charset($db, 'utf8mb4'); im Script. Im HTML-Kopf gehört zusätzlich <meta charset="utf-8"> in den Bereich head, damit der Browser die Seite richtig liest. Warum erscheinen nur die Bildtitel aus der Datenbank falsch, der restliche Text aber korrekt?Dann stimmt die Kodierung der Datenbankverbindung nicht, während die feste Datei korrekt als UTF-8 gespeichert ist. Das behebt mysqli_set_charset($db, 'utf8mb4'); nach dem Verbindungsaufbau. Sind dagegen feste Texte aus dem Quelltext betroffen, speichere die PHP-Datei im Editor als UTF-8 ohne BOM. Wie korrigiere ich bereits falsch gespeicherte latin1-Daten in größerer Menge?Statt jeden Titel von Hand zu ändern, lässt sich die betroffene Spalte mit einem gezielten SQL-Befehl umkodieren, der den Inhalt von latin1 nach utf8mb4 konvertiert. Lege vorher unbedingt eine Sicherung der Tabelle an, da eine falsche Umwandlung die Texte zerstören kann. Verwandte ThemenDa das Problem fast immer an der Datenbankverbindung hängt, führen diese Themen tiefer in Zeichensatz und Datenbank. | ||||||||