C8.1 : L'encodage des caractères
Présentation
Encodage des caractères
Comme avec les nombres, lorsqu'on souhaite travailler avec des caractères, il est nécessaire d'attribuer un code binaire à chacun d'eux. Cela s'appelle l'encodage.
Les normes d'encodage ont évoluées, de 128 caractères dans les années 60 avec l'ASCII, on est passé à plus de 100 000 caractères avec les normes actuelles.
Utiliser un éditeur hexadécimal
Un éditeur hexadécimal est une interface (logiciel, application ou page web) qui permet de visualiser et éditer directement le code d'un fichier.
L'éditeur que nous utiliserons est une page web dont voici le lien : hexed.it.
L'ASCII
Prendre connaissance
Table des caractères de l'ASCII
L'ASCII (American Standard Code for Information Interchange) est la première norme d'encodage des caractères. Chaque caractère est codé sur 7 bits.
MSB : Most Significant bit ou byte (= bit/octet de poids fort)
LSB : Least Significant Bit ou Byte (= bit/octet de poids faible)
Lecture du tableau
Les bits de poids forts (MSB, Most Significant Bit) étant en tête de colonne, le tableau ci-dessus s'utilise en commençant par la colonne et en terminant par la ligne.
Exemple : le caractère Z sera codé 101 1010 en binaire soit 5A en hexadécimal.
Remarque : le tableau précédent existe également avec les lignes et les colonnes inversées.
Application pour comprendre : utilisation de la table de l'ASCII
1) Donner le code binaire et hexadécimal du caractère H.
2) Donner le caractère qui correspond au code 1010111.
L'encodage ISO-8859-1
Prendre connaissance
L'ASCII ne permettant pas l'encodage des caractères accentués, en Europe occidentale, une autre norme a été proposée : l'ISO-8859-1 aussi appelée Latin-1.
D'après la page de Wikipédia sur l'encode ISO-8859-1
Applications pour comprendre : l'encodage ISO-8859-1
Application 1 : Comprendre la lecture de la table
1) D'après la table ci-dessus, sur combien de bits chaque caractère est-il codé ?
2) La norme ISO-8859-1 est-elle compatible avec la norme ASCII.
Application 2 : Encoder un texte
On s'intéresse au texte "Hello !" représentée à l'aide de la norme ISO-8859-1.
1) Indiquer le nombre de bits nécessaires pour encoder ce texte.
2) Donner la représentation de ce texte en hexadécimal.
3) Donner la représentation de ce texte en binaire.
=> Vérifier votre réponse avec l'éditeur hexadécimal.
Application 3 : Décoder un code
On s'intéresse au texte encodé à l'aide de la norme ISO-8859-1 dont la représentation en binaire est la suivante :
0011 1010 0010 1101 0010 1001
1) Indiquer le nombre de caractères contenus dans ce texte.
2) Retrouver ce texte.
L'Unicode et ses encodages
Prendre connaissance : la norme Unicode
Présentation
Avec l'augmentation de la puissance des machines et de la mémoire disponible, il devient possible d'envisager un encodage universel, c'est le but de la norme Unicode.
Actuellement, le standard Unicode (version 8.0) constitue un répertoire d'environ 120 000 caractères d'une centaine de langues
En Unicode, chaque caractère, aussi appelé point de code est noté U+xxxx où x est un chiffre hexadécimal. La plage des points de code va de 0hex à 10FFFFhex.
Remarques
• L'unicode ne définit aucun encodage (ce n'est pas sa fonction).
• La façon dont un caractère est représentée est appelé glyphe. Elle dépend de la police de caractère utilisée. Une police donnée ne dispose pas de glyphe pour tous les points de code !
Prendre connaissance : l'encodage des points de code
L'encodage ISO-8859-1 et la norme Unicode
Les points de code des caractères de l'encodage ISO-8859-1 sont les mêmes que leur code ISO-8859-1
L'encodage UTF-8
L'encodage UTF-8 utilise un nombre d'octet variable pour les différents caractères en fonction de l'importance de l'utilisation du caractère.
Voici le principe de l'encodage :
| Plage | Suite d'octets (en binaire) | bits codants | Remarques |
|---|---|---|---|
| U+0000 à U+007F | 0xxxxxxx | 7 bits | Codage sur 1 octet, compatible ASCII |
| U+0080 à U+07FF | 110xxxxx 10xxxxxx | 11 bits | Codage sur 2 octets |
| U+800 à U+FFFF | 1110xxxx 10xxxxxx 10xxxxxx | 16 bits | Codage sur 3 octets |
| U+10000 à U+10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | 21 bits | Codage sur 4 octets |
L'encodage UTF-32
L'encodage UTF-32 utilise 32 bits (soit 4 octets) pour coder tous les caractères de la norme Unicode
Exemples concrets
Le lien suivant permet de visualiser la table Unicode complète.
Il permet d'accéder à tous les caractères (points de code) et de visualiser les différents encodages. Ex : Lettre majuscule latine A.
Application pour comprendre : l'UTF-8
1) A l'aide du lien précédent (table Unicode complète), rechercher le point de code ainsi que le codage UTF-8 en binaire du caractère é
2) Justifier, en décortiquant le rôle de chaque bit du code, la correspondance entre ces deux valeurs.
3) Quel est le code ISO-8859-1 du même caractère ?