Mise à jour :
Réponse courte - Vous devriez presque toujours utiliser le utf8mb4
jeu de caractères et utf8mb4_unicode_ci
classement.
Pour modifier la base de données :
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Voir :
-
Commentaire d'Aaron sur cette réponse Comment faire en sorte que MySQL gère correctement l'UTF-8
-
Quelle est la différence entre utf8_general_ci et utf8_unicode_ci
-
Guide de conversion :https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Réponse originale :
MySQL 4.1 et supérieur a un jeu de caractères par défaut UTF-8. Vous pouvez le vérifier dans votre my.cnf
fichier, n'oubliez pas de définir les deux client et serveur (default-character-set
et character-set-server
).
Si vous avez des données existantes que vous souhaitez convertir en UTF-8, videz votre base de données et réimportez-la au format UTF-8 en vous assurant :
- utiliser
SET NAMES utf8
avant d'interroger/d'insérer dans la base de données - utiliser
DEFAULT CHARSET=utf8
lors de la création de nouvelles tables - à ce stade, votre client et votre serveur MySQL doivent être en UTF-8 (voir
my.cnf
). n'oubliez pas que tous les langages que vous utilisez (tels que PHP) doivent également être UTF-8. Certaines versions de PHP utilisent leur propre bibliothèque client MySQL, qui peut ne pas être compatible UTF-8.
Si vous souhaitez migrer des données existantes, n'oubliez pas de sauvegarder d'abord ! De nombreux hachages étranges de données peuvent se produire lorsque les choses ne se passent pas comme prévu !
Quelques ressources :
- migration UTF-8 complète (cdbaby.com)
- article sur préparation UTF-8 des fonctions php (notez que certaines de ces informations sont obsolètes)