1.1 Description
Le code ASCII représente les caractères sur 7 bits. Utilisé initialement par les téléscripteurs, il est adopté par les systèmes informatiques pour coder les caractères.
Téléscripteur
La table ASCII est composée de 2 parties :
a) La première de 0 a 31 regroupe les caractères non imprimables utilisés pour le contrôle. Par exemple le caractère 12 ordonne a l'imprimante de passer au début d'une nouvelle page ; 7 cause un beep sonore dans le téléscripteur récepteur.
Table ASCII des caractères de contrôle non imprimables
b) La deuxième regroupe les caractères imprimables ASCII et leur affecte les nombres de 32 à 126. Le nombre 127 représente la commande SUPPRESSION.
Table des caractères imprimables ASCII
1.2 Table ASCII étendue
ISO-8859-1 : ou Latin-1 langues de l'Europe de l'Ouest (caractères accentués).
windows-1252 : une variation Microsoft sur le ISO-Latin-1;
ISO-8859-2 : langues de l'Europe Centrale et de l'Est ;
ISO-8859-3 : langues turcs ;
ISO-8859-4 : langues baltes (Lituanie, Biélorussie, ...) ;
ISO-8859-5 : alphabet cyrillique (russe, bulgare, ...) ;
ISO-8859-6 : arabe ;
ISO-8859-7 : grec moderne ;
ISO-8859-8 : hébreu ;
…, etc.
2. UNICODE
Avec
la généralisation de l'internet, les ordinateurs, et plus
particulièrement les serveurs, doivent supporter plusieurs systèmes
de codage de caractères pour pouvoir voir cohabiter, par exemple,
Arabe et Chinois sur la même page web.
Unicode
utilise la notation hexadécimale préfixée par « U+ »
pour représenter un code point.
Exemple :
le caractère A est codé U+0041.
2.2
Formes d'encodage
- UTF-16 : Utilise généralement deux octets pour représenter les caractères. (problème (pour qui ? Non, on ne fait pas de politique ici!) : incompatible avec ASCII et un texte codable en ASCII occupera le double de sa taille).
- UTF-8: Utilise un nombre variable de bits selon le code point du caractère :
Exemple :
On
considère la chaîne ''hé !''.
En
ISO-Latin-1 les codes sont 104-233-32-33 en decimal ou 0110 1000-1110
1001-0010 0000-0010 0001 en binaire.
En
UTF-8, le code point de é est U+00E9 ou (233)10 (voir
tables ci-apres) donc on utilise le motif
110x
xxxx 10xx xxxx
Sur
11 bits 233 s’écrit 000 1110 1001 qui distribués sur le motif
donnent :
1100
0011 1010 1001
Enfin
la chaîne ''hé !'' sera donc encodée en UTF-8 par :
0110
1000-1100 0011 1010
1001-0010 0000-0010 0001.
Pour
l'operation inverse, on essaye de décoder cette chaîne (voir tables ci-apres).
Le
1ier octet commence par zéro donc ASCII, le deuxième par 110 donc
double octets et le 2ieme doit commencer par 10 ce qui est le cas. On
peut alors tirer du motif double octets les bits du code point :
xxx0
0011 xx10 1001 → 000 1110 1001 → U+00E9
qui
est le code point du é. Le reste c'est du code sur 1 octet (ASCII).
Annexe
Bibliographie
- wikipedia
cours de Fabien Torre, Université de Lille
Suggestions
de lecture (pour aller loin)