Skip to main content

CharSet and Collation

  • 📦 Character set = l’alphabet disponible
  • 📚 Collation = les règles de classement et de comparaison

Character set

c'est le jeu de caractères

Le character set définit quels caractères peuvent être stockés et comment ils sont encodés en binaire.

👉 Il répond à la question : “Quels symboles ma base peut-elle contenir ?”

Exemples:

  • ascii → seulement lettres anglaises de base
  • latin1 → caractères d’Europe de l’Ouest
  • utf8 / utf8mb4 → presque tous les caractères Unicode (emojis, alphabets du monde, etc.)

✅ Conseil actuel : 👉 utiliser utf8mb4 (le plus complet)

collation

La collation définit comment les chaînes de caractères sont comparées et triées.

👉 Elle répond à la question : “Comment comparer deux textes ?”

Elle détermine :

  • la sensibilité à la casse (A = a ?)
  • la sensibilité aux accents (é = e ?)
  • l’ordre de tri

Exemples (MySQL)

  • utf8mb4_general_ci
  • utf8mb4_unicode_ci
  • utf8mb4_bin
  • ci = case insensitive
  • cs = case sensitive
  • bin = comparaison binaire (très stricte)

Notes

En MySQL :

  • utf8 = UTF-8 limité à 3 octets, Impossible de stocker les caractères sur 4 octets: 😃 emojis ...
  • utf8mb4: Supporte 1 à 4 octets, Conforme au standard Unicode, Gère tous les caractères (emojis inclus)

Exemple recommandé (MySQL)

CREATE DATABASE app_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Pour une table :

ALTER TABLE users
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;