Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment faire en sorte que MySQL gère correctement UTF-8

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 :

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 :