dedlfix: Nach MySQL Upgrade von 5.7 auf 8.0 Darstellung von Umlauten kaputt

Beitrag lesen

Tach!

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 und in jedem HTML/PHP-Script

header("Content-Type: text/html; charset=iso-8859-1")
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

Die HTTP-Header-Angabe ist keine Anweisung für PHP, "das richtige zu tun". Die Angabe ist nur ein Hinweis für den Empfänger, welche Kodierung vorliegt. Dass sie tatsächlich vorliegt, liegt in deiner Verantwortung als Progammierer. Du musst bei allen Handlungen mit Daten darauf achten, in welcher Kodierung sie vorliegen, und dem Zielsystem mitteilen, in welcher Kodierung du sie zu ihm zu senden gedenkst. Einfach gesagt, aber der Teufel steckt im Detail.

Generell ist zu sagen, dass es sinnvoll ist, auf UTF-8 zu wechseln, und andere Kodierungen nur zu verwenden, wenn man einen zwingenden Grund dafür hat.

Du hast den Tabellenfeldern zwar gesagt, in welcher Kodierung die Daten zu speichern sind. Dazu kommt aber, dass du auf der Verbindung zu MySQL separat angeben musst, in welcher Kodierung du die Daten sendest. MySQL kodiert das gegebenenfalls um, wenn das zur Feldangabe nicht passt. Damit es dabei keine Probleme gibt, ist Voraussetzung, dass die Verbindungskodierungsangabe zu den Daten passt. MySQL erkennt nicht von sich aus, wenn du UTF-8 sendest, wenn du das als ISO-8859-1/Latin1 deklarierst, oder der Default-Wert ist. Anscheinend ist es hier der Fall, dass die Daten als Latin1 erwaetet, jedoch als UTF-8 gesendet wurden. Ich vermute, dass du beim Übertragen nicht auf die Kodierungsangabe geachtet hast und die Systeme unterschiedliche Default-Werte hatten.

Als erstes muss nun geschaut werden, was konkret vorliegt. Schau dir die Daten mit phpMyAdmin an. Wenn er die Umlaute richtig anzeigt, sind die Daten in der Regel passend zur Feldkodierung gespeichert. Zeigt er die Umlaute nicht korrekt an, sind die Daten kaputt und müssen repariert werden. Oder neu eingespielt, mit Beachtung und Angeben der tatsächlichen Kodierung.

dedlfix.