MySQL hatte lange Zeit Probleme mit Zeichensätzen; der bekannte Zeichensalat (auch „Mojibake“ genannt) war die Folge. Dann kam endlich der universelle Zeichensatz Unicode, bzw. UTF8. Praktisch verborgen blieb jedoch bis heute, dass MySQL standardmässig nur einen „beschränkten Unicode Zeichensatz“ verwendet. Dieser besteht nur aus 3, anstelle von 4 Zeichen und war wohl ursprünglich als „Performace-Optimierung“ gedacht.
Das reicht zwar für die allermeisten Schriftzeichen und Symbole, beispielsweise aber nicht für die mittlerweile sehr häufig verwendeten emojis. Schlimmer noch, probiert man ein solches Zeichen (z.B. ein emoji) in die Datenbank einzufügen, wird alles was nach dem Zeichen kommt abgeschnitten. Und das kann wiederum zu schlimmen Sicherheitslücken führen.
Dabei hatte MySQL seit etwa 2010 einen „neuen“ (bzw. den vollen) UTF8-Zeichensatz eingeführt mit dem Namen: utf8mb4
.
Neuere Web-Applikationen, wie WordPress oder Typo3 verwenden diesen seit einiger Zeit standardmässig, allerdings nur bei einer Neuinstallation. Viele ältere Datenbanken haben also noch den unvollständigen Zeichensatz eingestellt. Höchste Zeit also die alten Datenbanken mit dem richtigen Unicode Zeichensatz zu aktualisieren.
Continue reading Volles Unicode in MySQL Datenbanken