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 même dans les années 1990, vous pouviez trouver un logiciel qui supposait qu'il pouvait utiliser le 8ème bit de chaque octet de texte à ses propres fins ("pas 8 bits propre"). De nos jours, les gens le considèrent comme un codage 8 bits dans lequel les octets 0x80 à 0xFF n'ont pas de signification définie, mais c'est un retcon .
Il existe des dizaines d'encodages de texte qui utilisent le 8ème bit; ils peuvent être classés comme compatibles ASCII ou non, et de largeur fixe ou variable. Compatible ASCII signifie que quel que soit le contexte , les octets simples avec des valeurs de 0x00 à 0x7F codent les mêmes caractères qu'ils le feraient en ASCII. Vous ne voulez rien avoir à voir avec un encodage de texte non compatible ASCII si vous pouvez l'éviter; Les programmes naïfs qui attendent l'ASCII ont tendance à les mal interpréter de manière catastrophique, souvent révolutionnaire. Ils sont tellement obsolètes de nos jours que (par exemple) HTML5 interdit leur utilisation sur le Web public, à l'exception malheureuse de UTF-16 . Je ne vais plus en parler.
Un encodage à largeur fixe signifie ce à quoi il ressemble: tous les caractères sont encodés en utilisant le même nombre d'octets. Pour être compatible ASCII, un encodage fixe doit encoder tous ses caractères en utilisant un seul octet, de sorte qu'il ne peut pas avoir plus de 256 caractères. Le codage le plus courant de nos jours est Windows-1252 , une extension de l' ISO 8859-1 .
Il n'y a qu'un seul encodage compatible ASCII à largeur variable à connaître de nos jours, mais il est très important: UTF-8 , qui intègre tout Unicode dans un encodage compatible ASCII. Vous voulez vraiment l'utiliser si vous pouvez le gérer.
En guise de note finale, "ASCII" prend aujourd'hui sa définition pratique d'Unicode, et non de sa norme d'origine (ANSI X3.4-1968), car il existait historiquement plusieurs dizaines de variations sur le répertoire de 127 caractères ASCII - par exemple, certaines la ponctuation pourrait être remplacée par des lettres accentuées pour faciliter la transmission du texte français. De nos jours, toutes ces variantes sont obsolètes, et quand les gens disent «ASCII», cela signifie que les octets avec la 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 à rédiger une norme technique.
Si vous êtes intéressé par l'histoire de l'ASCII et les encodages qui l'ont précédé, commencez par l'article "L'évolution des codes de caractères, 1874-1968" (copie samizdat à http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) puis recherchez 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, je regrette de le dire).