Hallo Klaus,
ja, das Problem ist gelöst (bzw. umgangen), nur als Hintergrund warum das gerade bei dem Update passiert:
nach dem Upgrade von MySQL 5.7 auf 8.0 werden auf den Webseiten die deutsche Umlaute jetzt im UTF8 angezeigt (z.B. ü anstelle eines ü), obwohl sowohl die Kollation aller Tabellenfelder auf
latin1_general_ci
steht […]
Die Kollation ist für die Kodierung erstmal nicht relevant (damit werden nur die Sortierregeln vorgegeben) wobei damit als Charset latin1
eingestellt ist. Das alles ist aber für das Abfragen von Daten nicht wichtig, da ist wichtig was für die Verbindung zur Datenbank als Charset eingestellt ist – und da kommt das Upgrade MySQL 5.7 → 8.0 ins Spiel: während der Standardwert unter 5.7 noch latin1
war, ist er unter 8.0 jetzt utf8mb4
. Du hast vermutlich an der Standardeinstellung nichts geändert (und auch kein Charset für die Verbindung gesetzt) und damit gilt der neue Standardwert und die Datenbank liefert dir UTF-8-Daten. Da du die im Script verarbeitest als wären sie latin1-kodiert und auch de Browser mitteilst dass das so wäre, bekommst du natürlich nur Zeichensalat angezeigt.
Statt die Einstellungen des Servers zu verändern wäre es besser beim Aufbau der Verbindung immer anzugeben welcher Charset verwendet werden soll:
- mit PDO über
charset=latin1
im DSN beim Aufbau der Verbindung - bei der mysqli-Erweiterung über
set_charset()
Und auch wenn es schon gesagt wurde: verwende nicht latin1 sondern immer und überall UTF-8.
Gruß,
Tobias