Unicode: comment l'humanité est arrivée à une norme internationale d'encodage de caractères



Je suis sûr que la plupart des lecteurs connaissent au moins un peu les termes «Unicode» et «UTF-8». Mais est-ce que chacun sait ce qu'il y a exactement derrière eux? Essentiellement, ils font référence à des normes de codage de caractères, également appelées jeux de caractères. Le concept est apparu à l'époque du télégraphe optique, et non à l'ère de l'informatique, comme on pourrait le penser. Au XVIIIe siècle, il y avait un besoin de transmission rapide d'informations sur de longues distances, pour lesquelles les soi-disant codes télégraphiques étaient utilisés. Les informations ont été codées à l'aide de moyens optiques, électroniques et autres.



Au cours des centaines d'années qui se sont écoulées depuis l'invention du premier code télégraphique, il n'y a pas eu de réelle tentative de normalisation internationale de ces schémas de codage. Même les premières décennies de l'ère des téléscripteurs et des ordinateurs personnels ont peu changé. Alors que EBCDIC (encodage de caractères 8 bits d'IBM, montré sur une carte perforée dans l'illustration de l'en-tête) et ASCII amélioraient un peu les choses, il n'y avait toujours aucun moyen d'encoder une collection croissante de caractères sans utilisation importante de la mémoire.



Le développement d'Unicode a commencé à la fin des années 80, lorsque la croissance des échanges d'informations numériques à travers le monde a rendu le besoin d'un système de codage unique plus urgent. De nos jours, Unicode nous permet d'utiliser un système de codage unique pour tout, du texte anglais de base au chinois traditionnel, vietnamien, voire maya, en passant par les pictogrammes que nous appelions les emojis.



Du code aux graphiques



À l'époque de l'Empire romain, il était bien connu que la transmission rapide des informations importait. Pendant longtemps, cela signifiait la présence de messagers à cheval qui transportaient des messages sur de longues distances, ou leur équivalent. Comment améliorer le système de transmission d'informations a été inventé au 4ème siècle avant JC - c'est ainsi qu'un télégraphe à eau et un système de feux de signalisation sont apparus. Mais ce n'est qu'au XVIIIe siècle que la transmission de données à longue distance est devenue vraiment efficace.



Nous avons déjà écrit sur le télégraphe optique, également appelé «sémaphore», dans un article sur l'histoire de la communication optique. Il se composait d'un certain nombre de stations relais, chacune équipée d'un système de clignotants servant à afficher les symboles de code télégraphique. Le système des frères Chappe, utilisé par les troupes françaises entre 1795 et 1850, était basé sur une barre en bois avec deux extrémités mobiles (leviers), chacune pouvant se déplacer dans l'une des sept positions. Avec les quatre positions de la barre transversale, le sémaphore pourrait en théorie indiquer 196 caractères (4x7x7). Dans la pratique, le nombre a été réduit à 92-94 postes.



Le code télégraphique optique français des frères Chappe, 1809



Le système de sémaphore n'était pas tant utilisé pour encoder directement des caractères que pour désigner des chaînes spécifiques dans un livre de codes. La méthode impliquait qu'il était possible de déchiffrer le message entier en utilisant plusieurs signaux de code. Cela a rendu la transmission plus rapide et a rendu inutile l'interception des messages.



Amélioration des performances



Ensuite, le télégraphe optique a été remplacé par un télégraphe électrique. Cela signifiait que l'époque où les codages étaient capturés par les gens qui regardaient la tour de relais la plus proche était révolue. Avec deux appareils télégraphiques reliés par un fil métallique, le courant électrique est devenu l'instrument de transmission d'informations. Ce changement a conduit à de nouveaux codes télégraphiques électriques et le code Morse est finalement devenu une norme internationale (à l'exception des États-Unis, qui ont continué à utiliser le code Morse américain en dehors de la radiotélégraphie) depuis son invention en Allemagne en 1848.



Le code Morse international a un avantage sur son homologue américain: il utilise plus de tirets que de points. Cette approche ralentit la vitesse de transmission mais améliore la réception des messages à l'autre bout de la ligne. Cela était nécessaire lorsque de longs messages étaient transmis sur des kilomètres de câbles par des opérateurs de différents niveaux de compétence.



Norme ITA 2



Avec le développement de la technologie, le télégraphe manuel a été remplacé en Occident par un télégraphe automatique. Il utilisait le code Baudot 5 bits, ainsi que le code Murray qui en dérivait (ce dernier était basé sur l'utilisation de ruban de papier dans lequel des trous étaient percés). Le système de Murray a permis de préparer une bande de messages à l'avance, puis de la charger dans un lecteur pour que le message soit transmis automatiquement. Le code Baudot a formé la base de l'International Telegraphic Alphabet Version 1 (ITA 1), et le code Baudot-Murray modifié a formé la base de l'ITA 2, qui a été utilisé jusqu'aux années 1960.



Dans les années 1960, la limite de 5 bits par caractère n'était plus nécessaire, ce qui a conduit au développement de l'ASCII 7 bits aux États-Unis et de normes telles que JIS X 0201 (pour les caractères katakana japonais) en Asie. En combinaison avec les téléscripteurs, qui étaient alors largement utilisés, cela permettait la transmission de messages assez complexes, comprenant des majuscules et des minuscules.



Le jeu de caractères ASCII 7 bits complet



Au cours des années 1970 et au début des années 1980, les limitations des encodages 7 et 8 bits tels que l'ASCII étendu (comme ISO 8859-1 ou Latin 1) étaient suffisantes pour les ordinateurs domestiques grand public et les besoins des bureaux. Malgré cela, le besoin d'amélioration était clair, car les tâches courantes telles que l'échange de documents numériques et de texte faisaient souvent des ravages avec les nombreux encodages ISO 8859. La première étape a été franchie en 1991 avec Unicode 1.0 16 bits.



Développement d'encodages 16 bits



Étonnamment, en seulement 16 bits, Unicode a réussi à couvrir non seulement tous les systèmes d'écriture occidentaux, mais aussi de nombreux caractères chinois et de nombreux caractères spéciaux utilisés, par exemple, en mathématiques. Avec 16 bits permettant jusqu'à 65 536 points de code, Unicode 1.0 a facilement accueilli 7 129 caractères. Mais au moment où Unicode 3.1 est apparu en 2001, il contenait au moins 94 140 caractères.



Désormais, dans sa 13e version, Unicode contient un total de 143 859 caractères à l'exclusion des caractères de contrôle. Initialement, Unicode était destiné à être utilisé uniquement pour encoder les systèmes de notation actuellement utilisés. Mais avec la sortie d'Unicode 2.0 en 1996, il est devenu clair que cet objectif devait être repensé pour encoder même des caractères rares et historiques. Pour y parvenir sans l'encodage 32 bits obligatoire de chaque caractère, Unicode a changé: il permettait non seulement d'encoder directement les caractères, mais aussi d'utiliser leurs composants, ou graphèmes.



Le concept est quelque peu similaire aux images vectorielles, où chaque pixel n'est pas spécifié, mais à la place les éléments qui composent l'image sont décrits. Par conséquent, le codage Unicode Transformation Format 8 (UTF-8) prend en charge 2 31 point de code, la plupart des caractères du jeu de caractères Unicode actuel nécessitant généralement un ou deux octets.



Unicode pour tous les goûts et toutes les couleurs



À ce stade, de nombreuses personnes sont probablement déroutées par les différents termes utilisés en ce qui concerne Unicode. Par conséquent, il est important de noter ici qu'Unicode fait référence à la norme et que les différents formats de transformation Unicode en sont des implémentations. UCS-2 et USC-4 sont des implémentations plus anciennes d'Unicode à 2 et 4 octets, UCS-4 étant identique à UTF-32 et UCS-2 remplaçant UTF-16.



UCS-2, en tant que première forme d'Unicode, a fait son chemin dans de nombreux systèmes d'exploitation dans les années 1990, faisant de la transition vers UTF-16 l'option la moins dangereuse. C'est pourquoi Windows et MacOS, les gestionnaires de fenêtres tels que KDE et les environnements d'exécution Java et .NET utilisent UTF-16 en interne.



Un aperçu du plan Unicode multilingue de base, le premier plan Unicode avec pratiquement toutes les langues modernes



UTF-32, comme son nom l'indique, encode chaque caractère sur quatre octets. C'est un peu inutile, mais tout à fait prévisible. Le même caractère UTF-8 peut encoder un caractère compris entre un et quatre octets. Dans le cas de l'UTF-32, la détermination du nombre de caractères dans une chaîne est une simple arithmétique: prenez le nombre entier d'octets et divisez par quatre. Cela a conduit à des compilateurs et à certains langages, tels que Python, qui permettent à UTF-32 de représenter des chaînes Unicode.



Cependant, de tous les formats Unicode, UTF-8 est de loin le plus populaire. Cela a été largement facilité par le World Wide Web, où la plupart des sites Web servent leurs documents HTML au codage UTF-8. En raison de la disposition des différents plans de points de code en UTF-8, Western et de nombreux autres systèmes d'écriture courants tiennent dans deux octets. Par rapport aux anciens encodages ISO 8859 et Shift JIS, en fait, le même texte en UTF-8 ne prend pas plus de place qu'auparavant.



Des tours optiques à Internet



L'époque des messagers à cheval, des tours relais et des petites stations télégraphiques est révolue. La technologie de la communication a beaucoup évolué. Même les jours où les télétypes étaient courants dans les bureaux sont difficiles à retenir. Cependant, à chaque étape du développement de l'histoire, l'humanité avait besoin de coder, de stocker et de transmettre des informations. Et cela nous a conduit au point où nous pouvons désormais transmettre instantanément un message à travers le monde dans un système de symboles qui peuvent être décodés où que vous soyez.



Pour ceux qui ont basculé entre les encodages ISO 8859 dans les clients de messagerie et les navigateurs Web pour obtenir quelque chose qui ressemble au message texte d'origine, la prise en charge d'Unicode a été une bénédiction. Je peux comprendre ces gens. Lorsque l'ASCII 7 bits (ou EBCDIC) était la technologie incontestée, il était parfois nécessaire de passer des heures à trier la confusion symbolique d'un document numérique reçu d'un bureau européen ou américain.



Même si Unicode n'est pas sans problèmes, il est difficile de ne pas être reconnaissant de le comparer à ce qu'il était. Les voici, 30 ans d'Unicode.






All Articles