Als je website vreemde tekens, vraagtekens in blokjes of kapotte emoji’s toont, komt dat meestal doordat je database nog de verouderde charset utf8 of latin1 gebruikt in plaats van utf8mb4. Utf8mb4 is de volledige UTF-8-implementatie in MySQL/MariaDB en ondersteunt alle Unicode-tekens, inclusief emoji’s en bijzondere taaltekens. In dit artikel lees je wat utf8mb4 is, waarom het belangrijk is en hoe je het stap voor stap instelt zonder dataverlies.
Wat is UTF8MB4 en waarom gebruik je het
MySQL kent meerdere character sets om tekst op te slaan. De oudere charset utf8 in MySQL is eigenlijk een beperkte variant die maximaal 3 bytes per teken gebruikt. Daardoor kunnen veel moderne tekens, zoals emoji’s en sommige Aziatische karakters, niet correct worden opgeslagen. Utf8mb4 gebruikt tot 4 bytes per teken en dekt daarmee de volledige Unicode-standaard.
Voor een website of webshop is dit relevant zodra gebruikers tekst invoeren die buiten de basis-Latijnse tekenset valt: namen met accenten, Aziatische talen, speciale leestekens of emoji’s in reviews en chatberichten. Zonder utf8mb4 lopen dergelijke invoer en opslag vast of worden tekens beschadigd.
Verschil tussen utf8 en utf8mb4
Het belangrijkste verschil zit in de maximale byte-lengte per teken. Utf8 in MySQL ondersteunt het Basic Multilingual Plane niet volledig, terwijl utf8mb4 dat wel doet. Daarnaast is er een verschil in collation: waar utf8 bijvoorbeeld utf8_general_ci gebruikt, werk je bij utf8mb4 meestal met utf8mb4_general_ci of de nauwkeurigere utf8mb4_unicode_ci.
Een praktisch gevolg is dat kolommen met een index een iets kleinere maximale lengte kunnen hebben bij utf8mb4, omdat elk teken meer ruimte inneemt. Bij oudere MySQL-versies kon dit tot foutmeldingen leiden bij lange geΓ―ndexeerde tekstvelden, maar op moderne versies met de juiste instellingen is dit zelden nog een probleem.
UTF8MB4 instellen via Plesk
In Plesk kun je de charset van een database aanpassen via de ingebouwde databasebeheertool of phpMyAdmin. Ga naar Websites & Domeinen, open het tabblad Databases en klik bij de betreffende database op phpMyAdmin. Daar kun je per database of per tabel de collation wijzigen naar utf8mb4_unicode_ci via het tabblad Operations of Structure.
Controleer na het wijzigen altijd of je CMS of applicatie (zoals WordPress of een maatwerkscript) ook in zijn configuratiebestand de juiste charset gebruikt, zodat de verbinding tussen applicatie en database consistent is.
UTF8MB4 instellen via SQL-commando’s
Wil je de wijziging liever via SQL doen, bijvoorbeeld in phpMyAdmin’s SQL-tabblad of via de command line? Gebruik dan onderstaande commando’s als basis.
Database aanpassen
Voer uit: ALTER DATABASE jouw_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; om de standaard charset van de hele database te wijzigen.
Tabellen aanpassen
Voer per tabel uit: ALTER TABLE jouw_tabel CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; zodat bestaande kolommen worden geconverteerd.
Verbindingsinstellingen controleren
Zorg dat je applicatie verbinding maakt met utf8mb4, bijvoorbeeld via mysqli_set_charset($conn, "utf8mb4") in PHP, zodat data correct wordt verzonden en ontvangen.
Resultaat testen
Voer een testinvoer met emoji of bijzonder teken in en controleer of deze correct wordt opgeslagen en weergegeven op de website.
Loop je vast bij deze stappen? Raadpleeg de kennisbank van Tandata op /nl/support/ voor meer uitleg over databasebeheer, of neem contact op met de 24/7 support via WhatsApp, ticket of e-mail.
Veelgestelde vragen
Verlies ik data bij het converteren naar utf8mb4?
Normaal gesproken niet, zolang de bestaande data al geldige UTF-8-tekens bevat. Maak voor de zekerheid altijd een backup voordat je de conversie uitvoert.
Moet ik ook mijn CMS aanpassen na de conversie?
Ja, controleer het configuratiebestand van je CMS of script en zorg dat de databaseverbinding ook expliciet utf8mb4 gebruikt, anders blijven tekens mogelijk fout weergegeven.
Werkt utf8mb4 met alle MySQL-versies?
Utf8mb4 wordt ondersteund vanaf MySQL 5.5.3, maar voor volledige ondersteuning van 4-byte tekens en langere indexen is een recentere versie aan te raden.
Kan ik de charset wijzigen zonder downtime?
Bij kleinere databases merk je meestal niets van de conversie. Bij grote tabellen kan het even duren, dus voer dit bij voorkeur buiten piekuren uit.
Geldt dit ook voor e-mailgegevens in de database?
Ja, als je bijvoorbeeld e-mailberichten of contactformulieren opslaat in een database, zorgt utf8mb4 ervoor dat alle tekens correct bewaard blijven. Bekijk ook de mogelijkheden voor zakelijke e-mail bij Tandata.
Conclusie
Door je MySQL-database over te zetten naar utf8mb4 voorkom je weergaveproblemen met emoji’s, accenten en bijzondere tekens. Via Plesk of eenvoudige SQL-commando’s regel je dit snel, mits je eerst een backup maakt en je applicatie-instellingen controleert. Twijfel je over je huidige hostingomgeving? Bekijk de mogelijkheden voor webhosting bij Tandata.