ISO/CEI 10646 - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Unicode
Jeux de caractères
  • UCS (ISO/CEI 10646)
  • ISO 646, ASCII
  • ISO 8859-1
  • WGL4
  • UniHan
Équivalences normalisées
  • NFC (précomposée)
  • NFD (décomposée)
  • NFKC (compatibilité)
  • NFKD (compatibilité)
Propriétés et algorithmes
Codage
Autres transformations
  • Punycode
  • GB 18030
Applications d'échanges de données
  • Courriel et Unicode
  • Unicode et HTML

La norme ISO/CEI 10646, intitulée Technologies de l'information — Jeu universel de caractères codés sur plusieurs octets, tente de définir un système de codage universel pour tous les systèmes d'écriture. Ce standard est le fondement d'Unicode.

Description

La norme internationale ISO/CEI 10646 définit l'Universal Character Set (UCS) comme un jeu de caractères abstrait. Chaque caractère abstrait est identifié par un nom unique (un en anglais et un en français) et associé à un nombre entier positif appelé son point de code (ou position de code).

Environ 10.000 caractères (symboles, lettres, nombres, idéogrammes, logogrammes) issus langues, systèmes d'écritures, traditions du monde entier sont recensés dans l'UCS. De nouveaux caractères provenant d'écritures plus rares ou anciens, ou encore de systèmes nouveaux, sont fréquemment ajoutés ou mis à jour dans l'UCS.

Depuis 1991, le consortium Unicode collabore avec l'ISO pour développer The Unicode Standard ("Unicode") et la norme ISO/CEI 10646. Les répertoires, noms de caractères, et points de code de la Version 2.0 d'Unicode correspondent exactement à ceux de la norme ISO/CEI 10646-1:1993 avec ses sept premiers amendements publiés. Chaque publication d'une nouvelle version d'Unicode donne ensuite lieu à une mise à jour de la norme, c'est-à-dire l'adjonction de nouveaux caractères et la mise à jour de ceux déjà présents. Par exemple, la publication Unicode 3.0 en Février 2000 correspond à la norme ISO/CEI 10646-1:2000. Voir la section pour plus de détails.

L'UCS comprend plus d'1,1 million de points de code, mais seuls les 65.536 premiers (le Plan Multilingue de Base, ou PMB) ont été vulgarisés avant 2000. Cette situation commença à changer quand la Chine populaire (RPC) légiféra en 2000 que les systèmes informatiques vendus sur son territoire devaient supporter le GB 18030, ce qui nécessitait que les systèmes informatiques mis à la vente dans la RPC devaient utiliser les caractères au-delà du PMB.

Le système laisse delibérément beaucoup de code points non assignés, même dans le PMB. Cela permet de ménager des extensions futures ou de minimiser les conflits avec d'autres codages.

Histoire de l'ISO 10646

L'Organisation internationale de normalisation (ISO) a commencé à composer l'Universal Character Set en 1989 et a publié un brouillon de l'ISO 10646 en 1990. Hugh McGregor Ross en était un de ces principaux architectes. Ce standard différait nettement du standard courant. Il définissait 128 groupes de 256 plans de 256 rangées de 256 cellules, pour un total apparent de 2.147.483.648 caractères, mais actuellement le standard ne permet de coder que 679.477.248 caractères, car la police a interdit les valeurs d'octets des caractères de contrôle (0x00 à 0x1F et 0x80 à 0x9F, en notation hexadécimale) partout. La lettre latine capitale A, par exemple, se situe dans le groupe 0x20, plan 0x20, rangée 0x20, cellule 0x41.

Les caractères de ce premier ISO 10646 standard peuvent être codés de trois manières :

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

En 1990, deux initiatives pour un universal character set existaient : Unicode, avec 16 bits pour chaque caractère (65.536 caractères possible), et ISO 10646. Les entreprises du logiciel refusèrent d'accepter la complexité et les exigences de taille de l'ISO standard et surent convaincre un nombre de l'ISO National Bodies de voter contre. Les standardisers de l'ISO réalisèrent qu'ils ne pouvaient continuer à supporter le standard en l'état et négocièrent l'unification de leur standard avec Unicode. Deux changements eurent lieu : la levée des limitations sur les caractères (prohibition des valeurs de caractères de contrôle), permettant des caractères tels que 0x0000101F, et la synchronisation du répertoire du Basic Multilingual Plane avec celui d'Unicode.

Cependant, le temps passant, la situation changea dans le standard Unicode lui-même : 65.536 caractères devinrent vite insuffisants et, depuis la version 2.0 et suivantes, le standard supporte l'encodage de 1.112.064 caractères par les mécanismes de surrogate d'UTF-16. Pour cette raison, ISO 10646 fut limité à contenir autant de caractères que pouvait en contenir l'UTF-16, c.-à-d. à peine plus d'un million de caractères au lieu de plus de 2.000 millions. Le codage UCS-4 de l'ISO 10646 a été incorporé dans le standard Unicode avec la limitation de l'UTF-16 sous le nom d'UTF-32. Comme pour UTF-1, personne ne l'utilisa, en raison de son mauvais design (aucune manière de distinguer les octets solitaires, les octets de début de séquences et les autres octets, un problème similaire à celui du codage Shift-JIS pour le japonais) et de faibles performances (beaucoup d'opérations de division). Rob Pike et Ken Thompson, les développeurs du système d'exploitation Plan 9, conçurent un nouveau codage de taille variable, rapide et bien-fini, qui finit par être appelé UTF-8.

Page générée en 0.100 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise