Guide Unicode — Documentation Python 3.6.15

Histoire des codes de caractères¶

En 1968, l”American Standard Code for Information Interchange, mieux connu sous son acronyme ASCII, a été normalisé. L’ASCII définissait des codes numériques pour différents caractères, les valeurs numériques s’étendant de 0 à 127. Par exemple, la lettre minuscule « a » est assignée à 97 comme valeur de code.

ASCII était une norme développée par les États-Unis, elle ne définissait donc que des caractères non accentués. Il y avait « e », mais pas « é » ou « Í ». Cela signifiait que les langues qui nécessitaient des caractères accentués ne pouvaient pas être fidèlement représentées en ASCII. (En fait, les accents manquants importaient pour l’anglais aussi, qui contient des mots tels que « naïve » et « café », et certaines publications ont des styles propres qui exigent des orthographes tels que « coöperate ».)

Pendant un certain temps, les gens ont juste écrit des programmes qui n’affichaient pas d’accents. Au milieu des années 1980, un programme Apple II BASIC écrit par un français pouvait avoir des lignes comme celles-ci :

PRINT"MISE A JOUR TERMINEE" PRINT"PARAMETRES ENREGISTRES"

Ces messages devraient contenir des accents (terminée, paramètre, enregistrés) et ils ont juste l’air anormaux à quelqu’un lisant le français.

Dans les années 1980, presque tous les ordinateurs personnels étaient à 8 bits, ce qui signifie que les octets pouvaient contenir des valeurs allant de 0 à 255. Les codes ASCII allaient seulement jusqu’à 127, alors certaines machines ont assigné les valeurs entre 128 et 255 à des caractères accentués. Différentes machines avaient des codes différents, cependant, ce qui a conduit à des problèmes d’échange de fichiers. Finalement, divers ensembles de valeurs couramment utilisés pour la gamme 128–255 ont émergé. Certains étaient de véritables normes, définies par l’Organisation internationale de normalisation, et certaines étaient des conventions de facto qui ont été inventées par une entreprise ou une autre et qui ont fini par se répandre.

255 caractères, ça n’est pas beaucoup. Par exemple, vous ne pouvez pas contenir à la fois les caractères accentués utilisés en Europe occidentale et l’alphabet cyrillique utilisé pour le russe dans la gamme 128–255, car il y a plus de 128 de tous ces caractères.

Vous pouviez écrire les fichiers avec des codes différents (tous vos fichiers russes dans un système de codage appelé KOI8, tous vos fichiers français dans un système de codage différent appelé Latin1), mais que faire si vous souhaitiez écrire un document français citant du texte russe ? Dans les années 80, les gens ont commencé à vouloir résoudre ce problème, et les efforts de standardisation Unicode ont commencé.

Unicode a commencé par utiliser des caractères 16 bits au lieu de 8 bits. 16 bits signifie que vous avez 2^16 = 65 536 valeurs distinctes disponibles, ce qui permet de représenter de nombreux caractères différents à partir de nombreux alphabets différents. Un des objectifs initiaux était de faire en sorte que Unicode contienne les alphabets de chaque langue humaine. Il s’avère que même 16 bits ne suffisent pas pour atteindre cet objectif, et la spécification Unicode moderne utilise une gamme de codes plus étendue, allant de 0 à 1 114 111 (0x10FFFF en base 16).

Il existe une norme ISO connexe, ISO 10646. Unicode et ISO 10646 étaient à l’origine des efforts séparés, mais les spécifications ont été fusionnées avec la révision 1.1 d’Unicode.

(Cette discussion sur l’historique d’Unicode est extrêmement simplifiée. Les détails historiques précis ne sont pas nécessaires pour comprendre comment utiliser efficacement Unicode, mais si vous êtes curieux, consultez le site du consortium Unicode indiqué dans les références ou la page Wikipédia pour Unicode (page en anglais) pour plus d’informations.)

Tag » Code Ascii Lettre Python