logo
Codage du texte.

C'est quoi l'ASCII, l'UNICODE, l'UTF-8 ?

l'ASCII

L’ordinateur est un système « tout numérique » il ne manipule que des 0 et des 1. il faut donc trouver un moyen de représenter les lettres sous forme de nombre.

Il existe différentes conventions (ou codes). L'un des plus connus est le code ASCII (American Standard Code for Information Interchange). C'est un standard américain, mais c'est l'un des plus utilisés sur la plupart des ordinateurs. Le code ASCII définit précisément la correspondance entre symboles et nombres :

ASCII table

Par exemple le ‘A’ est stocké en mémoire sous le code 41(hex) soit 0100 0001(bin)

Exercice

Donner la suite de codes ASCII hexadécimaux correspondant à la chaîne "BONJOUR"?

>>> Proposition de solution - Proposition de solution - Proposition de solution <<<

BONJOUR --> 42-4F-4E-4A-4F-55-52


Mais alors comment l’ordinateur fait pour afficher le caractère à l’écran ?

A chaque code ASCII l’ordinateur associe
une matrice de pixel ou
une représentation vectorielle
correspondant au « dessin » de ce dernier
(on parle de glyphe du caractère)
Exemple de bitmap
de la lettre ‘O’
Exemple de représentation
vectorielle (très simplifiée)

Mais vous avez remarqué ? Il n'y a aucun caractère accentué ! Les américains nous ont oublié. Nous et d'autres pays : l'Espagne (avec le point d'interrogation retourné par exemple), l'Allemagne, etc. Sans parler des pays comme la chine ou le japon avec leurs différents alphabet...

Pour régler ce manque de codage des caractères accentués une solution à consister à étendre la table ASCII en utilisant les codes de 80 à FF pour disposer des caractères accentués… Et de disposer de plusieurs versions de table ASCII en fonction de la langue utilisée. Ce qui signifie qu’il était nécessaire de connaître la version de table ASCII utilisée pour coder un texte ! Pas pratique pour échanger des documents.

Voici quelques exemples de pages de code ASCII possibles et leur numéro d'identification :

 437 (DOS Extended ASCII / United States)
 850 (Latin-1 / Multilingual)
 852 (Latin-2 / Slavic)
 855 (Cyrillic)
 857 (Latin-5 / Turkey)

Et ci-dessous les pages de code 850 et 437. Observez les différences :

codePage

L'Unicode (www.unicode.org )

Au lieu d'utiliser seulement les codes 0 à 7F sur 8 bits , il utilise des codes bien plus grands qui peuvent aller jusqu’à 32 bits. L’UNICODE permet de représenter tous les caractères spécifiques aux différentes langues. Caractères latins (accentués ou non), grecs, cyrillics, arméniens, hébreux, thaï, hiragana, katakana... L'alphabet Chinois Kanji comporte à lui seul 6879 caractères. L'Unicode définie donc lui aussi une correspondance entre symboles et code binaire. (Le symbole Ő sera représenté par le code bin/hexa 00D2).

Voici des extraits de tables UNICODE (les nombres sont présentés en notation hexadécimal):

unicode

Unicode dans la pratique: UTF-8

Bon. Unicode, dans la théorie, c'est très bien. Mais dans la pratique, c'est une autre paire de manches: Généralement en Unicode, un caractères prend 2 octets. Autrement dit, le moindre texte prend deux fois plus de place qu'en ASCII. C'est du gaspillage. De plus, si on prend un texte en français, la grande majorité des caractères utilisent seulement le code ASCII. Seuls quelques rares caractères nécessitent l'Unicode.

On a donc trouvé une astuce: l'UTF-8.

Un texte en UTF-8 est simple: il est partout en ASCII, et dès qu'on a besoin d'un caractère appartenant à l'Unicode, on utilise un caractère spécial signalant "attention, le caractère suivant est en Unicode". Par exemple, pour le texte "Bienvenue chez Sébastien !", seul le "é" ne fait pas partie du code ASCII. On écrit donc en UTF-8:

problème d'encodage

L'UTF-8 rassemble le meilleur de deux mondes: l'efficacité de l'ASCII et l'étendue de l'Unicode. D'ailleurs l'UTF-8 a été adopté comme norme pour l'encodage des fichiers XML. La plupart des navigateurs récents supportent également l'UTF-8 et le détectent automatiquement dans les pages HTML.

Alors dans les pages web, comment on fait ?

Si vous mettez directement le caractère "é" dans une page web, ce n'est pas bien. ll faut obligatoirement choisir une des solutions suivantes:


A consulter :

  1. Informatique Lycée