Différence entre Unicode et UTF-8

Inspiré par What's the difference between Unicode and UTF-8 ?

Unicode : un ensemble standardisé de caractères

Plus précisément, Unicode est une norme qui spécifie un ensemble de couples (caractère, point de code). Le premier membre de chaque couple est un caractère de l'un des langages pris en compte. "Point de code" est le nom donné dans le jargon informatique au nombre entier unique qui caractérise ce caractère. Ainsi le caractère "A" a pour point de code "soixante-cinq".

La définition de l'Unicode ne spécifie pas comment est noté le point de code ; il revient à l'utilisateur de choisir s'il veut le noter en décimal, en hexadécimal, en binaire ou en utilisant un autre système.

Pour l'exemple déjà considéré, il serait possible d'écrire (A, LXV) en optant pour la notation en chiffres romains… Ce n'est pas le choix habituellement fait. Pour indiquer qu'aucun codage spécifique n'est adopté, une notation souvent rencontrée est (A, U+0041) où le point de code est représenté par un symbole alphanumérique construit avec son écriture en base 16 sans que cela ne présuppose un codage en mémoire. Un autre exemple est le caractère "1" pris en compte, dans la norme unicode, par le couple (1, quarante-neuf) ou (1, U+0031).

UTF-8 : une méthode d'encodage

UTF-8 est l'un des choix possibles pour encoder des messages écrits avec des caractères Unicode. Son efficacité en a fait le codage de prédilection sur internet. En réalité, il s'agit d'un algorithme qui permet de coder des caractères de l'Unicode en binaire pour les utiliser en mémoire ou les écrire sur un disque.

Par exemple, "Bonjour" s'écrit en unicode "U+0042 U+006F U+006E U+006A U+006F U+0075 U+0072", ou bien encore, toujours en unicode, de manière plus lisible,

"soixante-six cent-onze cent-dix cent-six cent-onze cent-dix-sept cent-quatorze".

L'algoritme UTF-8 encode ce mot par la suite d'octets :

"01000001   01101111  01101110  01101010  01101111  01110101  01110010"

et c'est ce qui sera écrit en mémoire. Dans cet exemple simple, chaque caractère (issu de l'ASCII traditionnel) est codé par un seul octet mais l'UTF-8 peut associer plusieurs (jusqu'à quatre à l'heure où cette page est écrite) octets à chaque caractère grâce à un algorithme optimisé.

Bien entendu, une application qui relit cette suite de bits ne saura pas comment les traduire si on ne lui dit pas d'utiliser l'algorithme UTF-8 pour les décoder.

En résumé


Div pour recevoir la date de mise à jour affichée par un Javascript.

logo html 5 Validation (x)html5