Codage des caractères

ASCII

En 1960, le developpement de l’informatique est essentiellement anglophone. A cette époque, le codage ASCII, pour American Standard Code for Information Interchange est crée pour écrire des textes en anglais. Cette norme ne définissait que 128 = 2^7 codes.
Les 95 caractères sont imprimables :
  • les chiffres de 0 à 9,
  • les lettres minuscules de a à z et les majuscules de A à Z,
  • des symboles mathématiques et de ponctuation

Représentation en ASCII

Trouver la représentation binaire en ASCII du texte
« Info. »

Représentation en ASCII

Décoder le texte ci-dessous
1010011   1100001   1101100   1110101   1110100

Comment coder ce message

Comment coder ce message ?
« NSI à fond en 2023 »

ISO-8859

La nécessité de représenter des textes comportant des caractères non présents dans la table ASCII tels ceux de l'alphabet latin utilisés en français comme le 'à', le 'é' ou le 'ç' impose l'utilisation d'un autre codage que l'ASCII.
Afin de faciliter les choses, ces propositions sont des extensions du codage ASCII:
  • le codage des caractères présents dans la table ASCII est conservé ;
  • le principe du codage de chacun des caractères sur un octet est conservé.

Mais les 8 bits de l'octet vont être utilisés. Cela permet de coder 2^8 = 256 caractères, soit 128 caractères supplémentaires.
L'ISO, organisation internationale de normalisation, propose de son côté plusieurs variantes de codages adaptées aux différentes langues. La plus utilisée concerne les langues européennes occidentales. Il s'agit de l'ISO-8859-1

Et les autres caractères ...

  • Le chinois courant : 3 000 à 5 000 sinogrammes (40 000 si on les compte tous)
  • Le japonais courant : 2.000 kanji (6 000 si on les compte tous) + les katakanas (46) et les hiraganas (46)
  • Le khmer : 33 graphèmes (35 si on les compte tous)
  • Le thaïlandais : 42 graphèmes (44 si on les compte tous)
  • ...
  • et les emojis 😀

Le codage UTF-8

UTF = UCS Transformation Format (UCS = Universal Character Set, norme ISO-10646)
Le numéro de chaque caractère est donné par le standard Unicode.
Les caractères de numéro 0 à 127 sont codés sur un octet dont le bit de poids fort est toujours nul.
Les caractères de numéro supérieur à 127 sont codés sur plusieurs octets. Dans ce cas, les bits de poids fort du premier octet forment une suite de 1 de longueur égale au nombre d'octets utilisés pour coder le caractère, les octets suivants ayant 10 comme bits de poids fort.

Définition du nombre d'octets utilisés

Représentation binaire UTF-8 Signification
0xxxxxxx 1 octet codant 1 à 7 bits
110xxxxx 10xxxxxx 2 octets codant 8 à 11 bits
1110xxxx 10xxxxxx 10xxxxxx 3 octets codant 12 à 16 bits
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 4 octets codant 17 à 21 bits

Exemple

Exemples de codage UTF-8
Caractère Numéro du caractère Codage binaire UTF-8
A 65 01000001
é 233 11000011 10101001
8364 11100010 10000010 10101100
𝄞 119070 11110000 10011101 10000100 10011110

Dans toute chaîne de caractères UTF-8, on remarque que :
  • tout octet de bit de poids fort nul code un caractère US-ASCII sur un octet ;
  • tout octet de bits de poids fort valant 11 est le premier octet d'un caractère codé sur plusieurs octets ;
  • tout octet de bits de poids fort valant 10 est à l'intérieur d'un caractère codé sur plusieurs octets.