Représentation des caractères
Code EBCDIC
Le code EBCDIC (Extended Binary Coded Decimal Interchange Code) est un code à 8 bits, créé par la firme IBM pour ses ordinateurs des séries 360 et 370.
Code ASCII
Le code ASCII (American Standard Code for Information Interchange) (on prononce généralement ‘aski') inventé par Bob River est l'un des plus anciens et plus utilisés codes informatique depuis 1963. A l'origine, il se base sur la représentation d'un caractère sur 7 bits, soit la possibilité de représenter 2^7 =128 caractères différents. Il représente les caractères les plus utilisés en langue anglaise :
les 52 lettres de l'alphabet en majuscule (de A à Z) et en minuscule (de a à z),
les dix chiffres arabes (de 0 à 9),
les 32 symboles : ! “ # $ % & ‘ () * + , - . / : ; < = > ? @ [\] ^ _ ` {│} ~ et autres symboles de mise en page (espace, retour-chariot, tabulation, retour-arrière, etc.).
La table des codes ASCII est donnée dans [1].
Notons que : les ordinateurs utilisaient des cases mémoire de un octet, mais ils réservaient toujours le 8e bit pour le contrôle de parité (c'est une sécurité pour éviter les erreurs, qui étaient très fréquentes dans les premières mémoires électroniques). Chaque caractère d'un texte codé en ASCII occupe alors un octet, le premier étant toujours zéro.
Exemples : Le caractère ‘A' est codé en ASCII par le nombre 65 soit 4116 Hexadécimal ou 1000001 binaire. Le caractère ‘a' est codé en ASCII par le nombre 97 soit 61 Hexadécimal ou 1100001 binaire.
Il va donc falloir étendre la table ASCII pour pouvoir coder les nouveaux caractères. L'idée est d'utiliser le 8ième bit pour coder plus de caractères. Soit la possibilité de coder 2^8=256 caractères différents. l'ASCII occupe les caractères de 0 a 127 et nous avions des significations différents pour les caractères 128 à 255.
Exemples:
La norme ISO 8859–1 appelée aussi Latin-1 qui couvre la plupart des langues de l'Europel'Ouest.
La norme ISO 8859–2 appelée aussi Latin-2 permet de coder tous les caractères des languesl'Europe de l'Est.
La norme ISO 8859–16 permet de coder tous les caractères de la langue arabe.
Code UTF
Unicode
Le code UNICODE a été développé par le Consortium Unicode. Contrairement au code ASCII qui permet d'utiliser seulement les codes 0 à 127, UNICODE utilise des codes de valeurs bien plus grandes [4]. Il possède 16 bits de largeur et permet de coder 65536 caractères différents. Il permet de représenter les caractères spécifiques aux différentes langues : latins (accentués ou non), grecs, arabes, cyrillics, arméniens, hébreux, thaï, hiragana,
katakana... L'alphabet Chinois Kanji comporte à lui seul 6879 caractères. L'Unicode est accepté par les systèmes d'exploitation, applications et langages actuels tels que Windows, JAVA, etc. Il permet donc :
D'unifier l'encodage de caractères, quelque soit le système d'exploitation,
D'utiliser simultanément plusieurs alphabets et de multiples symboles dans un même document.
L'Unicode définie donc une correspondance entre symboles et nombres. Chaque caractère ou symbole est représenté par un code qui est noté U+xxxx où xxxx est en hexadécimal, et comporte 4 à 6 chiffres :
4 chiffres pour le plan multilingue de base (entre U+0000 et U+FFFF) ;
5 chiffres pour les 15 plans suivants (entre U+10000 et U+FFFFF) ;
6 chiffres pour le dernier plan (entre U+100000 et U+10FFFF).
Les tables Unicode sont présentées dans [2].
Exemples:
A son code est U+0041
é son code est U+00E9
€ son code est U+20AC
UTF-8
Actuellement, un des systèmes d'encodage couramment utilisés est UTF-8 (Unicode Transformation Format). L'UTF-8 rassemble le meilleur de deux mondes: l'efficacité de l'ASCII et l'étendue de l'Unicode. Généralement en Unicode, un caractère prend 2 octets. Autrement dit,moindre texte prend deux fois plus de place qu'en ASCII. Ce qui permet de coder 65 535
caractères. 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. D'où l'intérêt du codage 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". 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.
L'encodage UTF-8 utilise 1, 2, 3 ou 4 octets en respectant certaines règles :
Un caractère en ASCII est codé de manière identique en UTF-8. On utilise un octet commençant par 0. Par exemple, le code Unicode du caractère A est U+0041, son code UTF-8 est donc 01000001.
Les autres caractères sont représentés sur des octets qui ne sont pas remplis entièrement. Les bits de poids fort du premier octet forment une suite de 1 indiquant le nombre d'octets utilisés pour coder le caractère. Les octets suivants commencent tous par 10.

Trouvons le code UTF-8 du symbole € correspond à la valeur hexadécimale U+20AC, soit la valeur décimale 8364. Le nombre hexadécimal 20AC vaut en binaire 10000010101100. Comme la taille de ce caractère est 14 bits, on a donc besoin de 3 octets pour l'encoder en UTF-8.
Ainsi, le codage UTF-8 correspondant est :
11100010 10000010 10101100
Soit le code UTF-8 en Hexadécimal E282AC.
UTF-32
Il permet de représenter vraiment tout les caractères possibles sur Unicode ( 1 114 112) Il consiste simplement a coder sur 32 bits /4 octets, le numéro du caractère. Si sous d'autre format on peut aussi obtenir un caractère sur 32 bits, ici il est fixe. Si il est simple à comprendre, c'est aussi celui qui prend le plus de place, car certain caractères sont codés sur moins d'octets.
UTF-16
On choisit un module de deux octets, soit 16 bits : on utilise un seul module pour tous les caractères du BMP (les caractères « multilingue ») et deux modules (quatre octets) pour ceux des autres plans. Plus compliqué, mais plus économique en place, surtout si on sort peu du BMP.