ASCII a en effet été conçu à l'origine comme un code à 7 bits. Cela a été fait bien avant que les octets 8 bits ne deviennent omniprésents, et jusque dans les années 1990, on pouvait trouver des logiciels qui partaient du principe qu'ils pouvaient utiliser le 8e bit de chaque octet de texte à leurs propres fins ("pas propre à 8 bits"). De nos jours, les gens pensez-y comme un codage 8 bits dans lequel les octets 0x80 à 0xFF n'ont pas de signification définie, mais c'est un rétrospective .
Il existe des dizaines de codages de texte qui utilisent le 8e bit ; ils peuvent être classés comme compatibles ou non avec l'ASCII, et à largeur fixe ou variable. Compatible avec l'ASCII signifie que quel que soit le contexte Les octets simples dont les valeurs vont de 0x00 à 0x7F codent les mêmes caractères qu'en ASCII. Vous ne voulez pas avoir affaire à un codage de texte non compatible avec l'ASCII si vous pouvez l'éviter ; les programmes naïfs qui s'attendent à l'ASCII ont tendance à mal les interpréter, ce qui est catastrophique et brise souvent la sécurité. Ils sont tellement dépréciés de nos jours que (par exemple) HTML5 interdit leur utilisation sur le Web public, à l'exception malheureuse de UTF-16 . Je ne vais plus parler d'eux.
Un encodage à largeur fixe signifie ce qu'il semble être : tous les caractères sont encodés en utilisant le même nombre d'octets. Pour être compatible avec l'ASCII, un codage à largeur fixe doit coder tous ses caractères en utilisant un seul octet, de sorte qu'il ne peut avoir plus de 256 caractères. L'encodage le plus courant de nos jours est Windows-1252 , une extension de ISO 8859-1 .
Il n'y a qu'un seul encodage compatible ASCII à largeur variable qui mérite d'être connu aujourd'hui, mais il est très important : UTF-8 qui regroupe tout Unicode dans un encodage compatible avec l'ASCII. Vous devriez vraiment l'utiliser si vous pouvez le faire.
Pour finir, le terme "ASCII" prend aujourd'hui le nom de pratique La définition de l'ASCII provient d'Unicode, et non de sa norme d'origine (ANSI X3.4-1968), parce qu'historiquement, il existait plusieurs dizaines de variations du répertoire de 127 caractères de l'ASCII - par exemple, une partie de la ponctuation pouvait être remplacée par des lettres accentuées pour faciliter la transmission de textes français. Toutes ces variations sont obsolètes, et lorsque l'on parle d'"ASCII", on entend par là que les octets de valeur 0x00 à 0x7F codent les points de code Unicode U+0000 à U+007F. Cela n'aura probablement d'importance pour vous que si vous vous retrouvez un jour à rédiger une norme technique.
Si vous vous intéressez à l'histoire de l'ASCII et des codages qui l'ont précédé, commencez par le document "The Evolution of Character Codes, 1874-1968" (copie samizdat à l'adresse http://falsedoor.com/doc/ascii_evolution-of-character-codes.pdf ) et ensuite de chasser ses références (dont beaucoup ne sont pas disponibles en ligne et peuvent être difficiles à trouver même avec l'accès à une bibliothèque universitaire, j'ai le regret de le dire).