Créer une base de données MySQL avec charset UTF-8

142

Je suis nouveau sur MySQL et j'aimerais savoir:

Comment créer une base de données avec charset, utf-8comme dans navicat?

create mydatabase;

... semble utiliser une sorte de jeu de caractères par défaut.

utilisateur3397998
la source

Réponses:

233

Remarque: Ce qui suit est maintenant considéré comme une meilleure pratique (voir la réponse de bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Réponse originale:

Essaye ça:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Pour plus d'informations, consultez Jeu de caractères de la base de données et classement dans le Manuel de référence MySQL.

shellbye
la source
1
MySQL utf8mb4est ce que le reste de nous appelle utf8. Alors, qu'est-ce que MySQL utf8vous demandez? C'est une version limitée d'utf-8 qui ne fonctionne que pour un sous-ensemble de caractères mais échoue pour des choses comme emoji. Plus tard, ils ont ajouté utf8mb4quelle est la bonne implémentation, mais MySQL doit rester rétrocompatible avec ses anciennes erreurs. C’est pourquoi il a ajouté un nouveau codage au lieu de corriger l’ancien. Toutes les nouvelles bases de données doivent utiliser utf8mb4.
Stijn de Witt
Si vous voulez aller dans le trou du lapin: COLLATE utf8mb4_unicode_520_ciou utf8mb4_0900_ai_ciou même spécifique locale, par exemple: utf8mb4_vi_0900_ai_ci. Pour MariaDB 10.2.2+, vous avez des classements "nopad" utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/fr/charset-unicode-sets.html
Frank Forte
@shellbye Pensez à mettre à jour votre réponse pour faire mention de utf8mb4_0900_ai_ci. Semble est mieux queutf8mb4_unicode_ci
Manuel Jordan
64

Tu devrais utiliser:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Notez que ce utf8_general_cin'est plus la meilleure pratique recommandée. Voir le Q & A connexe:

Quelle est la différence entre utf8_general_ci et utf8_unicode_ci sur Stack Overflow.

bikeman868
la source
Pensez à mettre à jour votre réponse pour qu'elle mentionne utf8mb4_0900_ai_ci. Semble est mieux queutf8mb4_unicode_ci
Manuel Jordan