Deux mots sur UTF-8
Pour accompagner la lecture du cours...
- L'idée est de représenter
- les 128 premiers caractères (ASCII) sur un seul octet, comme par le passé,
- de consacrer deux octets aux 1920 caractères suivants (toutes les lettres latines accentuées
les alphabets grec, arabe, hébreu, cyrillique, arménien et copte)
- et trois octets aux autres, supposés moins fréquents.
Notamment, les caractères devanâgari sont représentés en UTF-8 par trois octets.
- Les caractères chinois, quant à eux, pourront demander quatre octets.
- Exemple : le caractère Unicode n° 945 est la lettre grecque alpha minuscule "α"
945 = x03B1 ce qui s'écrit en binaire sur 2 octets 0000 0011 1011 0001.
Les 11 derniers bits "011 1011 0001" se répartissent dans cet ordre à l'intérieur d'une matrice de deux octets
à 11 places (5 + 6) 110xxxxx 10xxxxxx,
ce qui donne finalement la représentation de "α" en UTF-8 : 11001110 10110001 = <CE><B1>
Voyez l'article de Wikipedia en anglais pour en savoir davantage.
- Règle : le dernier chiffre hexadécimal du numéro Unicode d'un caractère se retrouve identique
comme dernier chiffre de sa représentation en UTF-8.
- Un procédé pour déterminer "sans calcul" la représentation UTF-8 des caractères devanagari :
- Ils ont des numéros allant de 2304 à 2431 (en décimal), soit x0900 à 097F (en hexa).
Leur premier chiffre hexa est donc toujours 0, ce qui signifie que
seuls les 12 derniers bits sont "utiles" pour les distinguer.
- Il s'ensuit que :
tous les caractères nagâri en UTF-8 sont de la forme <E0> <Ax> <yz>.
- où (en comptant 3 quartets non nuls = 12 bits)
- x = les deux derniers bits du premier quartet (non nul) + les deux premiers du deuxième quartet
- y = 10 (de la matrice) + les deux derniers bits du deuxième quartet
- z est exactement le 3ème quartet.