Umlaute

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
talbotsamba
Regular
Posts: 56
Joined: Sun Feb 08, 2009 5:10 pm

Umlaute

Post by talbotsamba »

Hallo,
in einer MySQL-Datenbank (MySQL 5.7) von S9Y befinden sich anstelle der Umlaute die Zeichen ä ü ö. Die Kollation der einzelnen Tabellen ist utf8_general_ci. Das führt dazu, dass bei der Anzeige ebenfalls diese Zeichen angezeigt werden. Unabhängig davon, ob "Datenbank-Zeichensatzkonvertierung aktivieren" aktiviert ist oder nicht.
In einer anderen MySQL-Datenbank werden die Umlaute direkt abgespeichert und dort gibt es auch keine Probleme bei der Anzeige.
Hat jemand eine Idee wie sich das Problem lösen lässt?
Beim Update auf 2.0.1 gab es einmal eine manuelle Datenbankanpassung habe ich gesehen. Ob es noch damit zusammenhängt?
Vielen Dank und Grüße
Oliver
erAck
Regular
Posts: 236
Joined: Mon Feb 16, 2015 1:20 am

Re: Umlaute

Post by erAck »

ä ü ö sind die UTF-8 code units (C3,A4 C3,BC C3,B6) der Zeichen ä ü ö als einzelne 8-Bit Zeichen dargestellt.

Entweder werden die gespeicherten UTF-8 Zeichen "roh" undekodiert angezeigt (eher nicht), oder wurden bereits doppelt enkodiert gespeichert, oder gar nicht enkodiert als Bytes gespeichert. Das würde sich nur anhand des wirklichen Inhalts der Datenbank in Bytes feststellen lassen. utf8_unicode_ci ist jedenfalls die richtige collation der Spalte, die Tabelle sollte auch die collation als default haben. Die Datenbank selber sollte als utf8mb4_general_ci erstellt sein. Es gab da irgendwann irgendwie mal Kraut und Rüben mit latin1_swedish_ci Tabellen (von Plugins?), das könnte auch der Grund sein, wenn von UTF-8 enkodierten Zeichen die code units als Latin1 gespeichert werden kommt genau so ein Unsinn bei raus.

Beheben ließe sich das vermutlich, indem der dekodierte Inhalt (also das was du siehst) als code units ein zweites Mal dekodiert wird um die eigentlichen Zeichen zu erhalten und das Ergebnis in eine utf8_unicode_ci Spalte zurückgeschrieben wird.

Ein SQL-Wizard kennt vielleicht ein Statement in einem Rutsch, ich wüsste jetzt nur Export der Tabelle, die Zeichenketten konvertieren und Reimport. Falls die Ursache wirklich eine falsche Speicherung war.
Post Reply