Jeu de caractères codés universel - Universal Coded Character Set

Jeu de caractères codés universel
Pseudo(s) SCU, Unicode
Langue(s) International
Standard ISO/CEI 10646
Formats d'encodage UTF-8 , UTF-16 , GB18030
Moins courants : UTF-32 , BOCU , SCSU , UTF-7
Précédé par ISO 8859 , ISO 2022 , divers autres.

Le jeu de caractères codés universels ( UCS , Unicode ) est un jeu standard de caractères défini par la norme internationale ISO/ CEI  10646 , Technologies de l'information — Jeu de caractères codés universels (UCS) (plus les modifications apportées à cette norme), qui est à la base de nombreux codages de caractères , s'améliorant à mesure que des caractères provenant de systèmes d'écriture auparavant non représentés sont ajoutés.

L'UCS a plus de 1,1 million de points de code possibles disponibles pour utilisation/attribution, mais seuls les 65 536 premiers, qui sont le plan multilingue de base (BMP), étaient d'usage courant avant 2000. Cette situation a commencé à changer lorsque la République populaire de Chine ( PRC) a décidé en 2006 que tous les logiciels vendus dans sa juridiction devaient prendre en charge GB 18030 . Cela nécessitait un logiciel destiné à la vente en RPC pour aller au-delà du BMP.

Le système laisse délibérément de nombreux points de code non attribués aux caractères, même dans le BMP. Il le fait pour permettre une expansion future ou pour minimiser les conflits avec d'autres formes de codage.

Encodage des formulaires

ISO/IEC 10646 définit trois formes de codage de caractères (et sept schémas de codage ) pour le jeu de caractères codés universel. UCS-2 n'est plus l'un d'entre eux, c'était le plus simple, et est maintenant obsolète, utilise une seule valeur de code (définie comme un nombre, dont un ou plusieurs représentent un point de code en général, mais pour UCS-2 c'est strictement une valeur de code qui représente un point de code) entre 0 et 65 535 pour chaque caractère, et autorise exactement deux octets (un mot de 16 bits ) pour représenter cette valeur. UCS-2 permet ainsi une représentation binaire de chaque point de code dans le BMP qui représente un caractère. UCS-2 ne peut pas représenter des points de code en dehors du BMP.

Le premier amendement à l'édition originale de l'UCS définissait l' UTF-16 , une extension de l'UCS-2, pour représenter les points de code en dehors du BMP. Une plage de points de code dans la zone S (spéciale) du BMP reste non attribuée aux caractères. UCS-2 interdit l'utilisation de valeurs de code pour ces points de code, mais UTF-16 autorise leur utilisation par paires. Unicode a également adopté l'UTF-16, mais dans la terminologie Unicode, les éléments de zone à demi-haut deviennent des « substituts élevés » et les éléments de zone à demi-bas deviennent des « substituts faibles ».

Un autre encodage, UTF-32 (auparavant nommé UCS-4), utilise quatre octets (total 32 bits) pour encoder un seul caractère de l' espace de code . UTF-32 permet ainsi une représentation binaire de chaque point de code dans l'UCS, y compris ceux en dehors du BMP. Comme dans UCS-2, chaque caractère encodé a une longueur fixe en octets, ce qui le rend simple à manipuler, mais bien sûr, il nécessite deux fois plus de stockage que UCS-2.

Actuellement, le codage UCS dominant est UTF-8 , qui est un codage à largeur variable conçu pour une compatibilité descendante avec ASCII , et pour éviter les complications de l'endianisme et des marques d'ordre des octets en UTF-16 et UTF-32. Plus de 97 % de toutes les pages Web sont encodées en UTF-8. L'Internet Engineering Task Force (IETF) exige que tous les protocoles Internet identifient le codage utilisé pour les données de caractères, et les codages de caractères pris en charge doivent inclure UTF-8. L'Internet Mail Consortium (IMC) recommande que tous les programmes de messagerie soient capables d'afficher et de créer du courrier en utilisant UTF-8. Il est également de plus en plus utilisé comme codage de caractères par défaut dans les systèmes d'exploitation, les langages de programmation, les API et les applications logicielles.

Histoire

L' Organisation internationale de normalisation (ISO) a entrepris de composer le jeu de caractères universel en 1989 et a publié le projet d'ISO 10646 en 1990. Hugh McGregor Ross était l'un de ses principaux architectes. Cette norme différait sensiblement de la norme actuelle. Il définissait :

  • 128 groupes de
  • 256 avions de
  • 256 rangées de
  • 256 cellules,

pour un total apparent de 2 147 483 648 caractères, mais en réalité la norme ne pouvait coder que 679 477 248 caractères, car la politique interdisait les valeurs d'octet des codes de contrôle C0 et C1 (0x00 à 0x1F et 0x80 à 0x9F, en notation hexadécimale ) dans l'un des quatre octets en spécifiant un groupe, un plan, une ligne et une cellule. La lettre majuscule latine A, par exemple, avait un emplacement dans le groupe 0x20, plan 0x20, rangée 0x20, cellule 0x41.

On pourrait coder les caractères de cette norme ISO 10646 primordiale de l'une des trois manières suivantes :

  1. UCS-4, quatre octets pour chaque caractère, permettant l'encodage simple de tous les caractères ;
  2. UCS-2, deux octets pour chaque caractère, permettant l'encodage du premier plan, 0x20, le plan multilingue de base, contenant les 36 864 premiers points de code, directement, et d'autres plans et groupes en basculant vers eux avec des séquences d'échappement ISO 2022 ;
  3. UTF-1 , qui code tous les caractères dans des séquences d'octets de longueur variable (1 à 5 octets, dont chacun ne contient aucun code de contrôle).

En 1990, donc, deux initiatives pour un jeu de caractères universel existaient : Unicode , avec 16 bits pour chaque caractère (65 536 caractères possibles), et ISO 10646. Les éditeurs de logiciels ont refusé d'accepter les exigences de complexité et de taille de la norme ISO et ont pu convaincre un certain nombre d'organismes nationaux de l'ISO de voter contre. Les normalisateurs ISO ont réalisé qu'ils ne pouvaient pas continuer à prendre en charge la norme dans son état actuel et ont négocié l'unification de leur norme avec Unicode. Deux changements ont eu lieu : la levée de la limitation sur les caractères (interdiction des valeurs de code de contrôle), ouvrant ainsi des points de code comme 0x0000101F pour l'attribution ; et la synchronisation du répertoire du Plan Multilingue de Base avec celui d'Unicode.

Pendant ce temps, au fil du temps, la situation a changé dans la norme Unicode elle-même : 65 536 caractères sont apparus insuffisants, et la norme à partir de la version 2.0 prend en charge l'encodage de 1 112 064 points de code à partir de 17 plans au moyen du mécanisme de substitution UTF-16. . Pour cette raison, ISO 10646 était limité à contenir autant de caractères que pouvait être encodé par UTF-16 et pas plus, c'est-à-dire un peu plus d'un million de caractères au lieu de plus de 679 millions. L'encodage UCS-4 de l'ISO 10646 a été incorporé dans la norme Unicode avec la limitation à la plage UTF-16 et sous le nom UTF-32 , bien qu'il n'ait pratiquement aucune utilité en dehors des données internes des programmes.

Rob Pike et Ken Thompson , les concepteurs du système d'exploitation Plan 9 , ont conçu un nouveau codage à largeur mixte, rapide et bien conçu, qui a été appelé UTF-8 , actuellement le codage UCS le plus populaire.

Différences avec Unicode

ISO 10646 et Unicode ont un répertoire et des numéros identiques - les mêmes caractères avec les mêmes numéros existent sur les deux normes, bien qu'Unicode publie de nouvelles versions et ajoute de nouveaux caractères plus souvent. Unicode a des règles et des spécifications en dehors du champ d'application de l'ISO 10646. L'ISO 10646 est une simple carte de caractères, une extension des normes précédentes comme l' ISO 8859 . En revanche, Unicode ajoute des règles pour le classement , la normalisation des formulaires et l' algorithme bidirectionnel pour les scripts de droite à gauche tels que l'arabe et l'hébreu. Pour l'interopérabilité entre les plates-formes, en particulier si des scripts bidirectionnels sont utilisés, il ne suffit pas de prendre en charge ISO 10646 ; Unicode doit être implémenté.

Pour prendre en charge ces règles et algorithmes, Unicode ajoute de nombreuses propriétés à chaque caractère de l'ensemble, telles que des propriétés déterminant la classe bidirectionnelle par défaut d'un caractère et des propriétés pour déterminer comment le caractère se combine avec d'autres caractères. Si le caractère représente une valeur numérique telle que le nombre européen « 8 » ou la fraction vulgaire « ¼ », cette valeur numérique est également ajoutée en tant que propriété du caractère. Unicode prévoit que ces propriétés prennent en charge la gestion de texte interopérable avec un mélange de langues.

Certaines applications prennent en charge les caractères ISO 10646 mais ne prennent pas entièrement en charge Unicode. Une de ces applications, Xterm , peut afficher correctement tous les caractères ISO 10646 qui ont un mappage caractère-glyphe un à un et une directionnalité unique. Il peut gérer certaines marques de combinaison par de simples méthodes de frappe, mais ne peut pas afficher l'hébreu (bidirectionnel), le devanagari (un caractère pour plusieurs glyphes) ou l'arabe (les deux caractéristiques). La plupart des applications GUI utilisent des routines de dessin de texte de système d'exploitation standard qui gèrent de tels scripts, bien que les applications elles-mêmes ne les gèrent toujours pas correctement.

Citer le jeu de caractères codés universel

ISO 10646 , une citation générale et informelle de la famille de normes ISO/IEC 10646, est acceptable dans la plupart des textes. Et même s'il s'agit d'une norme distincte, le terme Unicode est utilisé tout aussi souvent, de manière informelle, lors des discussions sur l'UCS. Cependant, toute référence normative à l'UCS en tant que publication doit citer l'année de l'édition sous la forme ISO/IEC 10646:{year} , par exemple : ISO/IEC 10646:2014 .

Relation avec Unicode

Depuis 1991, le Consortium Unicode et l' ISO ont développé la norme Unicode (« Unicode ») et ISO/IEC 10646 en tandem. Le répertoire, les noms de caractères et les points de code de la version 2.0 d'Unicode correspondent exactement à ceux de l'ISO/IEC 10646-1:1993 avec ses sept premiers amendements publiés. Après la publication d'Unicode 3.0 en février 2000, les caractères nouveaux et mis à jour correspondants sont entrés dans l'UCS via ISO/IEC 10646-1:2000. En 2003, les parties 1 et 2 de l'ISO/IEC 10646 ont été combinées en une seule partie, qui a depuis fait l'objet d'un certain nombre d'amendements ajoutant des caractères à la norme en synchronisation approximative avec la norme Unicode.

Voir également

Remarques

Les références

Liens externes