ANNÉES 1980

Unicode

En 1968, ASCII est une norme aux États-Unis. Le principe est d'attribuer une valeur numérique entre 0 et 127 à chaque caractère. La lettre « a » prend le code 97, « Z » le code 90. Simple, efficace... mais terriblement limité. Impossible d'écrire correctement « naïve » ou « café » avec ce système pensé pour l'anglais.

Durant les années 1980, l'informatique personnelle sur machines 8 bits prend son envol. Les valeurs possibles s'étendent jusqu'à 255. Constructeurs et éditeurs se ruent sur ces 128 positions supplémentaires pour y loger les caractères accentués. Chacun y va de sa solution. Commodore place les lettres accentuées françaises à sa façon, IBM aussi avec son code page 437. Un fichier créé sur une machine est illisible sur une autre. Ce qui ressemblait à du français sur un Amstrad CPC se transforme en hiéroglyphes sur un PC compatible.

Des conventions émergent petit à petit. L'Organisation internationale de normalisation standardise certains codages, d'autres s'imposent par la force de l'usage commercial. Mais le problème de fond demeure : 255 caractères, c'est dérisoire face aux besoins réels. Impossible d'intégrer simultanément les accents français et l'alphabet cyrillique. Les utilisateurs jonglent entre codages selon la langue du moment. KOI8 pour taper en russe, Latin1 pour le français. Écrire un texte citant du Tolstoï en version originale relève de l'exploit technique.

À la fin des années 1980, quelques visionnaires se lancent dans un projet fou : créer un système capable de représenter tous les caractères de toutes les langues humaines. Unicode naît de cette ambition, avec comme idée de départ passer aux caractères 16 bits. Au lieu de 255 positions, on dispose de 65 536 emplacements. De quoi loger chinois, arabe, hébreu, cyrillique et alphabets latins dans le même système.

L'ISO travaille en parallèle sur sa norme 10646. Deux projets, un seul objectif. Heureusement, les équipes finissent par fusionner leurs efforts avec la version 1.1 d'Unicode. Les 65 536 positions se révèlent insuffisantes et la spécification moderne s'étend jusqu'à 1 114 111 caractères possibles (0x10FFFF en notation hexadécimale).

Unicode va bien au-delà du simple catalogue de caractères. La norme définit des propriétés et règles d'usage complexes. Le consortium responsable publie un manuel de plus de 1 000 pages. S'y ajoutent 14 annexes techniques, 7 standards, 6 rapports techniques et 4 rapports stabilisés. Césure, rendu bidirectionnel, disposition verticale : tout y passe. L'ampleur de cette documentation révèle la complexité réelle du traitement de texte multilingue.

Mais en pratique, comment stocker ces caractères en mémoire ? La solution brutale consiste à réserver 32 bits par caractère. Mais elle multiplie par quatre l'espace disque et la bande passante par rapport à ASCII. Sans compter les problèmes de portabilité entre processeurs organisant différemment les octets.

UTF-8 apporte la réponse élégante. Ce format utilise un nombre variable d'octets selon le caractère. Un seul octet pour ASCII (valeurs inférieures à 128), deux octets pour les valeurs jusqu'à 2 047, trois ou quatre octets au-delà. Compatibilité ASCII préservée, pas d'octets nuls gênants, possibilité de resynchronisation en cas de corruption : les avantages s'accumulent.

UTF-16 existe aussi mais reste moins populaire. Il encode les caractères sur deux ou quatre octets avec un mécanisme spécial appelé « surrogate pairs » pour les caractères hors du plan multilingue de base. Un marqueur d'ordre des octets indique l'organisation des données en mémoire.

Les mises à jour de la norme créent parfois des turbulences. L'amendement 5 à ISO 10646 déplace et étend le bloc coréen Hangul, invalidant les données existantes. Cet épisode, baptisé « le bazar coréen », pousse les comités de normalisation à s'engager contre ce type de modification incompatible.

Unicode gère des mécanismes sophistiqués. Les caractères se combinent, comme un accent venant modifier sa lettre de base. La norme définit des règles de rendu bidirectionnel pour mélanger textes arabes (droite vers gauche) et occidentaux (gauche vers droite) dans le même document.

L'adoption d'Unicode transforme l'informatique. Systèmes d'exploitation, protocoles Internet, formats de fichiers : tout bascule vers cette représentation unifiée. L'internationalisation des logiciels s'en trouve grandement facilitée. Échanger un document multilingue est enfin naturel.

Le consortium Unicode poursuit son travail d'enrichissement. Nouveaux caractères pour couvrir des écritures historiques, support de besoins émergents : la norme évolue constamment. L'arrivée des émojis illustre cette capacité d'adaptation aux nouveaux usages de la communication numérique. Chaque ajout nécessite un soin minutieux pour préserver la cohérence d'ensemble.

Unicode marque une rupture dans l'histoire de l'informatique textuelle. Cette norme établit une base technique solide pour le traitement multilingue. Son adoption universelle prouve qu'il est possible de créer des standards internationaux complexes servant efficacement tous les utilisateurs de la planète.