Tekenset en collatie
Wat zijn een tekenset en een collatie?
Utf8mb4 is de tekenset die een database nodig heeft om alle tekens op te slaan, inclusief emoji. Een tekenset bepaalt welke tekens kunnen worden bewaard, en een collatie bepaalt hoe ze worden vergeleken.
Een collatie bepaalt bijvoorbeeld of een hoofdletter A en een kleine a als gelijk gelden bij zoeken. Ook bepaalt het de volgorde van sorteren, wat belangrijk is bij bijvoorbeeld een lijst met namen. Tekenset en collatie kies je per database, en vaak ook per tabel.
Waarom heb je utf8mb4 nodig voor emoji?
In MySQL en MariaDB heet de oudere, bekende tekenset 'utf8', maar die ondersteunt maar een deel van Unicode: maximaal drie bytes per teken. Emoji en sommige zeldzame tekens hebben er vier nodig. Utf8mb4 ondersteunt die wel.
Dat is praktisch belangrijk. Staat je database op de oude instelling, dan kan een emoji in een bericht of reactie niet goed worden opgeslagen. Hij verschijnt dan als vraagteken of wordt afgebroken. Voor nieuwe toepassingen kies je daarom meestal utf8mb4.
- Utf8mb4 neemt per teken iets meer ruimte in, maar dat maakt meestal weinig uit.
- Ook de verbinding van je website moet dezelfde tekenset gebruiken.
Welke versie van de databaseserver je hebt, en of die dit goed ondersteunt, lees je in het artikel over MySQL-versies.
Hoe ontstaan vreemde tekens na een verhuizing?
Vreemde tekens, zoals een letter die als twee rare symbolen verschijnt, ontstaan vaak doordat gegevens met de ene tekenset worden opgeslagen en met een andere worden uitgelezen. Dat gebeurt regelmatig bij een verhuizing: de gegevens worden geëxporteerd en daarna geïmporteerd op een server met andere instellingen. Ook als de database en de website het niet eens zijn over de tekenset, kan dit optreden.
Let daarom op:
- de tekenset van de database, de tabellen en de verbinding van de website;
- een back-up voordat je iets omzet, want omzetten is niet altijd eenvoudig terug te draaien;
- de instellingen op de nieuwe server voordat je de gegevens terugzet.
Lees meer over het maken en bewaren van kopieën in het artikel over databaseback-ups.
Veelgestelde vragen
Waarom zie ik vraagtekens of rare tekens op mijn website?
Meestal klopt de tekenset niet tussen de database, de verbinding en de website. Dat kan ontstaan na een verhuizing of import. De tekst in de database kan dan nog goed zijn, maar wordt verkeerd getoond. Kijk eerst naar de instellingen van de database en van de website.
Zijn alle databases al ingesteld op utf8mb4?
Nee, niet automatisch. De tekenset hangt af van hoe de database is aangemaakt en wat je hoster standaard instelt. Je ziet de instelling per database en per tabel, bijvoorbeeld in phpMyAdmin. Controleer dit voordat je gegevens verplaatst.