Bijwerken:
Kort antwoord - Je zou bijna altijd de utf8mb4
. moeten gebruiken charset en utf8mb4_unicode_ci
sortering.
Om de database te wijzigen:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Zie:
-
Aarons commentaar op dit antwoord Hoe zorg ervoor dat MySQL UTF-8 correct afhandelt
-
Wat is het verschil tussen utf8_general_ci en utf8_unicode_ci
-
Conversiegids:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Oorspronkelijk antwoord:
MySQL 4.1 en hoger heeft een standaard tekenset van UTF-8. U kunt dit verifiëren in uw my.cnf
bestand, vergeet niet om beide . in te stellen client en server (default-character-set
en character-set-server
).
Als u bestaande gegevens heeft die u naar UTF-8 wilt converteren, dump dan uw database en importeer deze terug als UTF-8 en zorg ervoor dat:
- gebruik
SET NAMES utf8
voordat u de database opvraagt/invoegt - gebruik
DEFAULT CHARSET=utf8
bij het maken van nieuwe tabellen - op dit punt zouden uw MySQL-client en -server in UTF-8 moeten staan (zie
my.cnf
). onthoud dat alle talen die je gebruikt (zoals PHP) ook UTF-8 moeten zijn. Sommige versies van PHP gebruiken hun eigen MySQL-clientbibliotheek, die mogelijk niet UTF-8-bewust is.
Als u bestaande gegevens toch wilt migreren, vergeet dan niet eerst een back-up te maken! Er kan heel wat raar hakken van gegevens gebeuren als dingen niet gaan zoals gepland!
Enkele bronnen:
- voltooide UTF-8-migratie (cdbaby.com)
- artikel over UTF-8 gereedheid van php-functies (merk op dat een deel van deze informatie verouderd is)