Codage des caractères
Un codage des caractères définit comment caractères ou points de code sont représentés par des suites d’octets puis décodés.
Définition
Un codage des caractères indique comment convertir des unités textuelles en nombres ou octets pour les stocker et les transmettre, puis les restituer. Émetteur et destinataire doivent employer le même codage.
ASCII, UTF-8, UTF-16 et les anciennes pages de codes sont des codages ou schémas. Unicode définit le répertoire et les points de code ; UTF-8 et UTF-16 leur représentation concrète.
Fonctionnement
L’encodeur associe aux caractères une suite valide et le décodeur applique l’inverse. En UTF-8, A vaut 41 et € vaut E2 82 AC. Un codage de longueur variable utilise un nombre d’octets différent.
Le charset HTTP, la déclaration du fichier ou le protocole indique le bon décodeur. Sans contexte, les mêmes octets peuvent produire des textes différents.
Exemple pratique
Décodés en UTF-8, les octets E2 82 AC donnent €. Avec un codage mono-octet sans rapport, ils donnent d’autres caractères : cette corruption visible est souvent appelée mojibake.
Convertir exige de décoder correctement la source puis d’encoder les caractères vers la cible. Changer seulement l’étiquette ne convertit pas les octets.
Erreurs et pièges
Une suite invalide peut être refusée ou remplacée par U+FFFD. Si le codage cible ne représente pas un caractère, erreur, substitution ou perte de données sont possibles.
Marque d’ordre des octets, boutisme, normalisation Unicode et fins de ligne sont des sujets liés mais distincts. Le codage n’est pas un chiffrement.
Non. Unicode attribue points et propriétés ; UTF-8 encode ces points en octets.
Les octets ont pu être mal décodés ou remplacés parce que le codage cible ne pouvait pas représenter les caractères.
Non. Certains octets conviennent à plusieurs codages, surtout un court texte ASCII. Métadonnées, BOM ou contexte sont souvent nécessaires.