Codage des textes (ASCII, Unicode, etc.)

icône de pdf
Signaler
Cette leçon t’explique comment les ordinateurs transforment les lettres et symboles en suites de 0 et de 1 grâce aux systèmes d’encodage. Tu verras l’évolution de l’ASCII limité à 128 caractères, de l’ISO-8859-1 pour l’Europe de l’Ouest, jusqu’à l’Unicode et surtout UTF-8, aujourd’hui standard mondial. En Python, tu apprendras aussi à lire et écrire des fichiers texte en respectant l’encodage pour éviter les erreurs d’affichage. Mots-clés : encodage, ASCII, Unicode, UTF-8, Python, fichier texte.

Introduction

Quand tu écris un message, que tu lis un site Web ou que tu ouvres un fichier texte, tu manipules des caractères. Mais pour qu’un ordinateur puisse traiter ces lettres, chiffres et symboles, il doit les convertir en nombres binaires. Cette conversion repose sur des systèmes de codage appelés encodages. De l’ASCII à l’Unicode, ces systèmes ont évolué pour permettre à tous les langages du monde d’être représentés en binaire. Bien comprendre comment un texte devient une suite de 0 et de 1 permet d’éviter les erreurs d’affichage et de mieux maîtriser la lecture et l’écriture des fichiers texte.

Du caractère au nombre : principe de l'encodage

Un caractère est un symbole abstrait (lettre, chiffre, ponctuation…). Pour être manipulé par une machine, il est associé à un code numérique, appelé code point. Ce code est ensuite converti en binaire pour être stocké en mémoire.

L'encodage est la convention qui établit la correspondance entre les caractères et leurs représentations numériques. Il ne s'agit pas d'une information visible dans un fichier texte : seul le contenu binaire y est stocké. C’est donc le logiciel de lecture qui doit connaître l'encodage pour bien interpréter le fichier.

À retenir

Un caractère est représenté par un nombre selon une table d’encodage. Ce nombre est ensuite traduit en binaire pour être enregistré, mais l’encodage utilisé n’est pas enregistré dans le fichier lui-même.

Les premiers systèmes : ASCII et ISO-8859-1

ASCII : l’encodage originel

L’ASCII (American Standard Code for Information Interchange) est le premier encodage utilisé largement. Il représente 128 caractères sur 7 bits (valeurs de 0 à 127), suffisants pour :

  • Les lettres majuscules et minuscules de l’alphabet anglais.

  • Les chiffres de 0 à 9.

  • Les signes de ponctuation.

  • Quelques commandes de contrôle (comme retour à la ligne).

Exemples :

  • A → 65

  • a → 97

  • ! → 33

ASCII est simple et encore largement compatible avec les systèmes modernes, mais il n’est pas adapté aux langues utilisant des accents ou d'autres alphabets.

ISO-8859-1 : une extension pour l’Europe de l’Ouest

Pour prendre en compte les caractères accentués, l’encodage ISO-8859-1 (aussi appelé Latin-1) utilise 8 bits, soit 256 caractères. Il conserve les 128 premiers codes ASCII et ajoute :

  • é → 233

  • ç → 231

  • à → 224

Cet encodage permet d’écrire en français, espagnol, allemand… mais pas dans les langues slaves, arabes, grecques ou asiatiques.

À retenir

ASCII permet de coder 128 caractères en 7 bits. ISO-8859-1 étend ce codage à 256 caractères sur 8 bits, avec les lettres accentuées des langues européennes occidentales.

Unicode : un codage universel

Avec Internet et les logiciels multilingues, il est devenu indispensable de représenter tous les alphabets du monde dans un même système. C’est le rôle de Unicode.

Ce que fait Unicode

  • Il attribue à chaque caractère un code point unique, noté sous la forme U+XXXX.

  • Exemple : é → U+00E9, → U+20AC.

  • Il couvre plus de 140 000 caractères : lettres, idéogrammes, symboles, ponctuations, émojis…

Unicode est une table de correspondance universelle, à la différence d’ASCII ou d’ISO-8859-1 qui combinent table et méthode de stockage.

UTF-8 : le format de stockage le plus utilisé

Unicode ne définit pas comment stocker les caractères en mémoire. C’est le rôle des formats de transformation, dont le plus courant est UTF-8.

  • UTF-8 encode chaque caractère avec 1 à 4 octets.

  • Les 128 premiers codes (ASCII) sont codés sur 1 octet : cela garantit la compatibilité.

  • Les autres caractères utilisent 2, 3 ou 4 octets.

Exemples (illustratifs) :

  • A → 01000001 (1 octet)

  • é → 11000011 10101001 (2 octets)

  • → 11100010 10000010 10101100 (3 octets)

D'autres formats comme UTF-16 ou UTF-32 existent, mais UTF-8 est devenu le standard sur le Web et dans la plupart des systèmes modernes.

À retenir

Unicode fournit une table universelle de caractères. UTF-8 est un format d'encodage qui stocke ces caractères sur 1 à 4 octets. Il est compatible avec ASCII et supporte toutes les langues.

Lire et écrire un fichier texte en Python

Quand un fichier texte est lu ou écrit, il faut préciser l'encodage. Si le mauvais encodage est utilisé, le texte peut s’afficher avec des symboles étranges ou provoquer des erreurs.

Exemple correct

# Écriture
with open("texte.txt", "w", encoding="utf-8") as f:
    f.write("Voilà un café bien chaud !")

# Lecture
with open("texte.txt", "r", encoding="utf-8") as f:
    contenu = f.read()

Exemple avec erreur d’encodage

with open("texte.txt", "r", encoding="ascii") as f:
    contenu = f.read()  # UnicodeDecodeError

Les erreurs comme UnicodeDecodeError ou les affichages du type é au lieu de é sont dus à une incohérence entre l’encodage de lecture et celui d’écriture.

À retenir

L’encodage d’un fichier texte doit être précisé à l’écriture comme à la lecture. Une erreur d’encodage se manifeste souvent par des symboles incohérents ou des plantages.

Comparaison des encodages

Encodage

Taille (par caractère)

Caractères pris en charge

Remarques

ASCII

7 bits (1 octet)

Lettres anglaises, chiffres, ponctuations

Très limité, encore utilisé comme base

ISO-8859-1

8 bits (1 octet)

Langues européennes occidentales

Incompatible avec les alphabets non latins

UTF-8

1 à 4 octets

Tous les caractères Unicode

Standard moderne, universel

Conclusion

Les caractères que tu lis ou écris sont, pour l’ordinateur, des nombres codés selon une table précise. De l’ASCII limité à l’Unicode universel, les systèmes de codage ont évolué pour s’adapter à la diversité linguistique mondiale. UTF-8, grâce à sa compatibilité avec ASCII et sa capacité à représenter tous les alphabets, s’est imposé comme le format dominant. Pour éviter les erreurs d’affichage ou de lecture, il est essentiel de connaître et de respecter l’encodage des fichiers texte.