La représentation des caractères
Cette leçon permettra de savoir comment représenter en binaire des caractères textuels.
Définition
Un caractère est un symbole d'écriture représentant en général une lettre (A, b, C), un chiffre (1,2,3,...) ou un symbole (字, Д).
En informatique, on ne peut pas représenter de but en blanc un caractère de cette manière car elle ne comprend que des 0 et des 1.
Il faudra de fait, les coder pour la machine.
Le codage d'un caractère est une association entre celui-ci et une représentation binaire. On appelle un système de codage est un ensemble de règles pour convertir une information par une autre (ici un caractère avec sa représentation binaire).
Un système de codage de caractère : ASCII
L'ASCII (American Standard Code for Information Interchange) est un codage qui utilise 7 bits pour représenter des caractères alpha-numériques et d'autres caractères réservés (comme l'espace ou le retour chariot).
En ayant 7 bits pour représenter un caractère, on peut représenter \(2^7\) caractères soient 128 caractères.
Pour faciliter la compréhension, on peut dresser une table de correspondance.
Déc | Hex | Car | Déc | Hex | Car | Déc | Hex | Car | Déc | Hex | Car |
---|---|---|---|---|---|---|---|---|---|---|---|
32 | 20 | (space) | 48 | 30 | 0 | 64 | 40 | @ | 80 | 50 | P |
33 | 21 | ! | 49 | 31 | 1 | 65 | 41 | A | 81 | 51 | Q |
34 | 22 | " | 50 | 32 | 2 | 66 | 42 | B | 82 | 52 | R |
35 | 23 | # | 51 | 33 | 3 | 67 | 43 | C | 83 | 53 | S |
36 | 24 | $ | 52 | 34 | 4 | 68 | 44 | D | 84 | 54 | T |
37 | 25 | % | 53 | 35 | 5 | 69 | 45 | E | 85 | 55 | U |
38 | 26 | & | 54 | 36 | 6 | 70 | 46 | F | 86 | 56 | V |
39 | 27 | ' | 55 | 37 | 7 | 71 | 47 | G | 87 | 57 | W |
40 | 28 | ( | 56 | 38 | 8 | 72 | 48 | H | 88 | 58 | X |
41 | 29 | ) | 57 | 39 | 9 | 73 | 49 | I | 89 | 59 | Y |
42 | 2A | * | 58 | 3A | : | 74 | 4A | J | 90 | 5A | Z |
43 | 2B | + | 59 | 3B | ; | 75 | 4B | K | 91 | 5B | [ |
44 | 2C | , | 60 | 3C | < | 76 | 4C | L | 92 | 5C | \ |
45 | 2D | - | 61 | 3D | = | 77 | 4D | M | 93 | 5D | ] |
46 | 2E | . | 62 | 3E | > | 78 | 4E | N | 94 | 5E | ^ |
47 | 2F | / | 63 | 3F | ? | 79 | 4F | O | 95 | 5F | _ |
96 | 60 | ` | 112 | 70 | p | 128 | 80 | € | 144 | 90 | É |
97 | 61 | a | 113 | 71 | q | 129 | 81 | ‚ | 145 | 91 | ‘ |
98 | 62 | b | 114 | 72 | r | 130 | 82 | ƒ | 146 | 92 | ’ |
99 | 63 | c | 115 | 73 | s | 131 | 83 | „ | 147 | 93 | “ |
100 | 64 | d | 116 | 74 | t | 132 | 84 | … | 148 | 94 | ” |
101 | 65 | e | 117 | 75 | u | 133 | 85 | † | 149 | 95 | • |
102 | 66 | f | 118 | 76 | v | 134 | 86 | ‡ | 150 | 96 | – |
103 | 67 | g | 119 | 77 | w | 135 | 87 | ˆ | 151 | 97 | — |
104 | 68 | h | 120 | 78 | x | 136 | 88 | ‰ | 152 | 98 | ˜ |
105 | 69 | i | 121 | 79 | y | 137 | 89 | Š | 153 | 99 | ™ |
106 | 6A | j | 122 | 7A | z | 138 | 8A | ‹ | 154 | 9A | š |
107 | 6B | k | 123 | 7B | { | 139 | 8B | Œ | 155 | 9B | œ |
108 | 6C | l | 124 | 7C | 140 | 8C | | 156 | 9C | ||
109 | 6D | m | 125 | 7D | } | 141 | 8D | | 157 | 9D | |
110 | 6E | n | 126 | 7E | ~ | 142 | 8E | | 158 | 9E | |
111 | 6F | o | 143 | 8F | | 159 | 9F | |
Cependant, à la vue de cette table, on remarque une chose : il n'y a que des symboles d'alphabets latins. Or, il n'existe pas uniquement les alphabets latins mais aussi le cyrillique ou bien les symboles des alphabets chinois ou japonais.
Pour se faire, on a besoin d'un codage permettant de représenter d'avantage de caractères.
Un système plus inclusif : Unicode
Unicode est un système de codage de caractère qui utilise un certain nombre de bits en fonction de sa version, plus connu sous le nom de UTF.
On utilise plus souvent le système UTF-8 qui utilise 8 bits pour représenter des caractères. Il peut cependant utiliser 1, 2 voire même 3 groupes de 8 bits (octets) pour représenter d'avantages de caractères.
Chaque symbole possède un point de code, qui est l'ensemble des bits permettant sa représentation, souvent représenté en hexadécimal.
On peut citer par exemple les caractères 풪 pour point de code 052A, A (a majuscule) pour point de code 41 ou encore ᛒ (lettre B runique) pour point de code 16D2.
Remarque : Python utilise l'encodage UTF-8 pour coder ses symboles et les représenter. Il est possible cependant d'observer un encodage spécial sur une chaîne de caractère en utilisant la méthode encode
des chaînes de caractères.
On retrouvera la table UTF-8 à cette adresse : Table UTF-8.