Cette page suit toujours le même plan : le principe en une phrase, les étapes dans l'ordre exact, une démonstration interactive, le code Python, puis les points clés à retenir.
Chaque mot ci-dessous est utilisé exactement dans ce sens dans toute la page.
| Mot | Définition précise |
|---|---|
| Caractère | Une lettre, un chiffre, un symbole ou un espace : l'unité de base d'un texte. |
| Encodage | La règle qui associe à chaque caractère une suite de bits (0 et 1), pour pouvoir le stocker ou l'envoyer sous forme numérique. |
| Code point | Le numéro attribué à un caractère (par exemple, 65 pour la lettre A). On l'écrit souvent en hexadécimal, précédé de U+ (par exemple U+0041). |
| ASCII | Un des premiers standards d'encodage, qui utilise 7 bits (donc 128 caractères possibles) : lettres non accentuées, chiffres, ponctuation. |
| Unicode | Un standard qui attribue un code point unique à un très grand nombre de caractères de toutes les langues du monde, ainsi qu'aux émojis. |
| UTF-8 | Une façon d'encoder les code points Unicode en octets, en utilisant de 1 à 4 octets selon le caractère. Les caractères ASCII gardent le même code sur 1 octet. |
| Octet | Un groupe de 8 bits. |
On encode le caractère é en UTF-8. Ce caractère est un bon exemple car il n'existe pas en ASCII (qui ne contient pas les lettres accentuées) : il faut donc 2 octets en UTF-8, au lieu d'un seul.
| Caractère | Code point | Nombre d'octets en UTF-8 | Octets (hexadécimal) |
|---|---|---|---|
| A | 65 (U+0041) | 1 (caractère ASCII) | 0x41 |
| é | 233 (U+00E9) | 2 | 0xC3 0xA9 |
| € | 8364 (U+20AC) | 3 | 0xE2 0x82 0xAC |
Plus le code point est grand (plus le caractère est « loin » dans la table Unicode), plus il faut d'octets pour l'encoder en UTF-8.
caractere = "é"code_point = ord(caractere)print(code_point)# Résultat affiché : 233octets = caractere.encode("utf-8")print(list(octets))# Résultat affiché : [195, 169]print([format(o, '08b') for o in octets])# Résultat affiché : ['11000011', '10101001']# Et pour retrouver le caractère à partir des octets :print(octets.decode("utf-8"))# Résultat affiché : é
0....... = 1 octet, 110..... = 2 octets, 1110.... = 3 octets, 11110... = 4 octets.10.str) et une suite d'octets (bytes) sont deux types différents : .encode("utf-8") passe de l'un à l'autre, .decode("utf-8") fait l'inverse.