Objectifs.
  • Identifier l’intérêt des différents systèmes d’encodage.
  • Comprendre la différence entre caractère, code et octets.
  • Convertir un fichier texte dans différents formats d’encodage.

1. Principe fondamental

Un ordinateur ne manipule que des nombres. Pour représenter un texte, il faut :

  1. Associer chaque caractère à un nombre (code).
  2. Stocker ce nombre en mémoire sous forme d’octets selon un encodage.

Vocabulaire

  • Un caractère est un symbole lisible (par exemples : a, é, ).
  • Un point de code est le numéro unicode du caractère (par exemple, U+00E9).
  • Un Encodage est une règle de conversion du code aux octets.

2. ASCII (American Standard Code for Information Interchange) : le premier encodage

Le code ASCII associe un nombre (de 0 à 127) à des caractères utilisés en anglais (lettres non accentuées, chiffres, ponctuation).

Exemple : A est associé à 65 (en base 10) soit 01000001 en binaire et 0x41 en hexadécimal.

ASCII est limité : il ne permet pas de représenter les accents, les autres alphabets, ni les symboles modernes.

3. ISO-8859 (Latin-1) : une extension limitée

Les encodages ISO-8859 utilisent 8 bits (256 valeurs) pour ajouter des caractères accentués (ex. é, ç).

4. Unicode : un code unique pour chaque caractère

Unicode définit un numéro unique (point de code) pour chaque caractère utilisé dans le monde.

Exemples :

Unicode définit quel nombre représente un caractère, mais pas comment il est stocké en mémoire.

5. UTF-8 (Unicode Transformation Format - 8 bits) : l’encodage universel

UTF-8 est un encodage Unicode très utilisé car :

Caractère Unicode UTF-8 (hex) Octets
AU+0041411
éU+00E9C3 A92
U+20ACE2 82 AC3

6. Manipulation en Python

# Caractère ↔ code Unicode
ord("A")      # 65
chr(65)       # 'A'

# Texte ↔ octets (UTF-8)
b = "é".encode("utf-8")
print(b)              # b'\xc3\xa9'
print(list(b))        # [195, 169]

b.decode("utf-8")     # 'é'
En Python :
  • str représente du texte (Unicode).
  • bytes représente des octets.

7. Conversion d’un fichier texte

Convertir un fichier texte consiste à :

  1. Lire le fichier avec son encodage d’origine.
  2. Réécrire le texte avec un nouvel encodage.
# Conversion Latin-1 à UTF-8

with open("ancien.txt", "r", encoding="latin-1") as f:
    texte = f.read()

with open("nouveau.txt", "w", encoding="utf-8") as f:
    f.write(texte)
Si l’on lit un fichier avec un mauvais encodage, le texte devient incorrect (ex. é au lieu de é).

8. Applications