Accueil🇫🇷Chercher

CESU-8

Le CESU-8 (Compatibility Encoding Scheme for UTF-16: 8-Bit) est un codage de caractères variante d'UTF-8 dĂ©crit dans le document Unicode Technical Report #26[1] publiĂ© par le consortium Unicode. C'est un encodage d'Unicode sur 8 bits non normalisĂ©, destinĂ© Ă  un usage interne et non destinĂ© Ă , ni recommandĂ© pour, des communications. Certains considèrent que sa place est davantage parmi les Technical Notes de l'organisation que dans les rapports techniques.

Le but principal de CESU-8 est de maintenir la mĂŞme collation binaire qu'UTF-16 tout en gardant un codage 8 bits. Cependant, comme aucun traitement du caractère NUL n'est appliquĂ©, la chaĂ®ne rĂ©sultante ne peut ĂŞtre traitĂ©e comme une chaine terminĂ©e par un caractère NUL si la chaine d'origine contient le caractère U+0000.

DĂ©tails techniques

CESU-8 s'apparente Ă  l'UTF-8 modifiĂ© de Java (Modified UTF-8) mais privĂ© du codage spĂ©cial du caractère NUL (U+0000). Il diffère seulement d'UTF-8 par sa reprĂ©sentation diffĂ©rente des caractères supplĂ©mentaires. Pour les caractères extĂ©rieurs au Plan multilingue de base (ceux gĂ©nĂ©rant une paire de seizets d'indirection en UTF-16), CESU-8 gĂ©nère uniquement des sĂ©quences de 6 octets (c'est-Ă -dire deux fois 3 octets), lĂ  oĂą UTF-8 gĂ©nère une sĂ©quence de taille de 4 octets pour la valeur du caractère dans UTF-32. Pour ces caractères, CESU-8 prend les valeurs, situĂ©es dans U+D800..U+DFFF, de chacun des deux points de code de la paire de seizets, puis les code sur 6 octets, au lieu de coder le caractère reprĂ©sentĂ© par la paire.

En dehors de ces caractères, assez peu courants, les flux UTF-8 et CESU-8 sont similaires et peuvent conduire à des détections erronées. C'est une des raisons pour lesquelles le consortium Unicode ne recommande pas son usage hors d'une mise en œuvre fermée. Le nom originel de CESU-8 était d'ailleurs UTF-8S, ce qui renforçait la confusion.


Dans le cas de données UTF-16 d'entrée invalides (c'est-à-dire un seizet de paire non couplé), bien que reproduire l'erreur dans la sortie serait fidèle, il est recommandé que le convertisseur notifie l'erreur et arrête le traitement[2].

Utilisation de CESU-8

Dans la pratique, le seul environnement majeur faisant usage de CESU-8 est le SGBD relationnel Oracle, qui semble-t-il utilise désormais UTF-16 comme représentation interne des caractères. « L'UTF8 » (sans le trait d'union) d'Oracle, en réalité CESU-8, est un codec non-standard rejetant les séquences représentant un caractère hors BMP mais acceptant et générant celles usitées dans CESU-8. On peut obtenir la norme UTF-8 en utilisant le jeu de caractères « AL32UTF8 » (depuis Oracle version 9.0).

Il a aussi été rapporté que MySQL depuis la version 5 tolère les séquences CESU-8 quand UTF-8 est attendu[3].

Exemple

Codage U+0045U+0205U+10400
UTF-8 45C885F0909080
UTF-16 00450205D801DC00
CESU-8 45C885EDA081EDB080

Voir aussi

Notes et références

Articles connexes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.