Wenn deine Website seltsame Zeichen, Fragezeichen in Kästchen oder kaputte Emojis anzeigt, liegt das meist daran, dass deine Datenbank noch den veralteten Zeichensatz utf8 oder latin1 verwendet statt utf8mb4. Utf8mb4 ist die vollständige UTF-8-Implementierung in MySQL/MariaDB und unterstützt alle Unicode-Zeichen, einschließlich Emojis und besonderer Sprachzeichen. In diesem Artikel erfährst du, was utf8mb4 ist, warum es wichtig ist und wie du es Schritt für Schritt einrichtest, ohne Datenverlust zu riskieren.
Was ist UTF8MB4 und warum solltest du es nutzen
MySQL kennt mehrere Zeichensätze zur Speicherung von Text. Der ältere Zeichensatz utf8 in MySQL ist eigentlich eine eingeschränkte Variante, die maximal 3 Bytes pro Zeichen verwendet. Dadurch können viele moderne Zeichen, wie Emojis und manche asiatische Schriftzeichen, nicht korrekt gespeichert werden. Utf8mb4 verwendet bis zu 4 Bytes pro Zeichen und deckt damit den vollständigen Unicode-Standard ab.
Für eine Website oder einen Webshop ist dies relevant, sobald Nutzer Text eingeben, der über die lateinische Basis-Zeichenmenge hinausgeht: Namen mit Akzenten, asiatische Sprachen, spezielle Satzzeichen oder Emojis in Bewertungen und Chatnachrichten. Ohne utf8mb4 kommt es bei solchen Eingaben und Speicherungen zu Fehlern oder beschädigten Zeichen.
Unterschied zwischen utf8 und utf8mb4
Der wichtigste Unterschied liegt in der maximalen Byte-Länge pro Zeichen. Utf8 in MySQL unterstützt das Basic Multilingual Plane nicht vollständig, während utf8mb4 dies tut. Zudem gibt es einen Unterschied bei der Collation: Während utf8 beispielsweise utf8_general_ci verwendet, arbeitest du bei utf8mb4 meist mit utf8mb4_general_ci oder dem präziseren utf8mb4_unicode_ci.
Eine praktische Folge ist, dass Spalten mit einem Index bei utf8mb4 eine etwas kleinere maximale Länge haben können, da jedes Zeichen mehr Platz beansprucht. Bei älteren MySQL-Versionen konnte dies zu Fehlermeldungen bei langen indizierten Textfeldern führen, bei modernen Versionen mit den richtigen Einstellungen ist das jedoch selten noch ein Problem.
UTF8MB4 über Plesk einrichten
In Plesk kannst du den Zeichensatz einer Datenbank über das integrierte Datenbankverwaltungstool oder phpMyAdmin anpassen. Gehe zu Websites & Domains, öffne den Tab Datenbanken und klicke bei der betreffenden Datenbank auf phpMyAdmin. Dort kannst du pro Datenbank oder pro Tabelle die Collation über den Tab Operations oder Structure auf utf8mb4_unicode_ci ändern.
Überprüfe nach der Änderung immer, ob dein CMS oder deine Anwendung (z. B. WordPress oder ein individuelles Skript) in der Konfigurationsdatei ebenfalls den richtigen Zeichensatz verwendet, damit die Verbindung zwischen Anwendung und Datenbank konsistent bleibt.
UTF8MB4 über SQL-Befehle einrichten
Möchtest du die Änderung lieber per SQL vornehmen, zum Beispiel im SQL-Tab von phpMyAdmin oder über die Kommandozeile? Nutze dann die folgenden Befehle als Grundlage.
Datenbank anpassen
Führe aus: ALTER DATABASE deine_datenbank CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; um den Standard-Zeichensatz der gesamten Datenbank zu ändern.
Tabellen anpassen
Führe pro Tabelle aus: ALTER TABLE deine_tabelle CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; damit bestehende Spalten konvertiert werden.
Verbindungseinstellungen überprüfen
Stelle sicher, dass deine Anwendung sich mit utf8mb4 verbindet, zum Beispiel über mysqli_set_charset($conn, "utf8mb4") in PHP, damit Daten korrekt gesendet und empfangen werden.
Ergebnis testen
Gib testweise ein Emoji oder ein besonderes Zeichen ein und prüfe, ob es korrekt gespeichert und auf der Website angezeigt wird.
Kommst du bei diesen Schritten nicht weiter? Wirf einen Blick in die Wissensdatenbank von Tandata unter /nl/support/ für weitere Erklärungen zur Datenbankverwaltung, oder kontaktiere den 24/7-Support per WhatsApp, Ticket oder E-Mail.
Häufig gestellte Fragen
Verliere ich beim Konvertieren zu utf8mb4 Daten?
Normalerweise nicht, solange die bestehenden Daten bereits gültige UTF-8-Zeichen enthalten. Erstelle zur Sicherheit trotzdem immer ein Backup, bevor du die Konvertierung durchführst.
Muss ich nach der Konvertierung auch mein CMS anpassen?
Ja, überprüfe die Konfigurationsdatei deines CMS oder Skripts und stelle sicher, dass die Datenbankverbindung ebenfalls explizit utf8mb4 verwendet, sonst können Zeichen weiterhin falsch dargestellt werden.
Funktioniert utf8mb4 mit allen MySQL-Versionen?
Utf8mb4 wird ab MySQL 5.5.3 unterstützt, für vollständige Unterstützung von 4-Byte-Zeichen und längeren Indizes empfiehlt sich jedoch eine aktuellere Version.
Kann ich den Zeichensatz ohne Ausfallzeit ändern?
Bei kleineren Datenbanken merkst du von der Konvertierung in der Regel nichts. Bei großen Tabellen kann es etwas dauern, daher solltest du dies vorzugsweise außerhalb der Stoßzeiten durchführen.
Gilt das auch für E-Mail-Daten in der Datenbank?
Ja, wenn du beispielsweise E-Mail-Nachrichten oder Kontaktformulare in einer Datenbank speicherst, sorgt utf8mb4 dafür, dass alle Zeichen korrekt erhalten bleiben. Schau dir auch die Möglichkeiten für geschäftliche E-Mail bei Tandata an.
Fazit
Indem du deine MySQL-Datenbank auf utf8mb4 umstellst, vermeidest du Darstellungsprobleme bei Emojis, Akzenten und besonderen Zeichen. Über Plesk oder einfache SQL-Befehle richtest du dies schnell ein, sofern du vorher ein Backup erstellst und deine Anwendungseinstellungen überprüfst. Bist du dir bei deiner aktuellen Hostingumgebung unsicher? Wirf einen Blick auf die Möglichkeiten für Webhosting bei Tandata.