Lorsque je crée une nouvelle base de données MySQL via phpMyAdmin, j'ai la possibilité de choisir le classement (par exemple, par défaut, armscii8, ascii, ... et UTF-8). Celui que je connais est UTF-8, car je le vois toujours dans le code source HTML. Mais quel est le classement par défaut? Quelles sont les différences entre ces choix et lequel dois-je utiliser?
Le classement n'est pas réellement la valeur par défaut, il vous donne le classement par défaut en premier choix.
Ce dont nous parlons est collation , ou le jeu de caractères que votre base de données utilisera dans ses types de texte. Votre option par défaut est généralement basée sur les paramètres régionaux, donc à moins que vous ne prévoyiez de vous mondialiser, c'est généralement vif.
Les classements déterminent également la sensibilité à la casse et à l'accent (c'est-à-dire `` grand '' == `` grand ''? Consultez la liste MySQL pour toutes les options.
Le classement indique à la base de données comment effectuer la correspondance et le tri des chaînes. Il devrait correspondre à votre jeu de caractères.
Si vous utilisez UTF-8, le classement doit être utf8_general_ci. Cela triera dans l'ordre Unicode (insensible à la casse) et cela fonctionne pour la plupart des langues. Il conserve également ASCII et ordre Latin1.
Le classement par défaut est normalement latin1.
Réponse courte: utilisez toujours utf8mb4
(Plus précisément utf8mb4_unicode_ci
) lorsqu'il s'agit de classement dans MySql & MariaDB.
Longue réponse:
Le codage utf8 de MySQL est maladroitement nommé, car il est différent du codage UTF-8 approprié. Il n'offre pas de prise en charge complète d'Unicode, ce qui peut entraîner une perte de données ou des vulnérabilités de sécurité.
Heureusement, MySQL 5.5.3 (publié au début de 2010) a introduit un nouvel encodage appelé utf8mb4 qui correspond à l'UTF-8 approprié et supporte donc pleinement Unicode.
Lisez le texte complet ici: https://mathiasbynens.be/notes/mysql-utf8mb4
Quant à savoir quel utf8mb
pour choisir, allez avec utf8mb4_unicode_ci
afin que le tri soit toujours géré correctement avec des inconvénients de performances minimes/imperceptibles. Voir plus de détails ici: Quelle est la différence entre utf8_general_ci et utf8_unicode_ci