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).
Sur Linux
man ascii
dit:la source
La table ASCII d'origine est codée sur 7 bits, elle comporte donc 128 caractères.
De nos jours, la plupart des lecteurs / éditeurs utilisent une table ASCII "étendue" (à partir de l' ISO 8859-1 ), qui est encodée sur 8 bits et jouit de 256 caractères (y compris Á , Ä , Œ , é , è et d'autres caractères utiles pour les langues européennes également sous forme de glyphes mathématiques et autres symboles).
Alors que UTF-8 utilise le même codage que la table ASCII de base (la signification
0x41
est A dans les deux codes), il ne partage pas le même codage pour le bloc "Latin Extended-A". Ce qui fait parfois apparaître des caractères étranges dans des mots comme à la carte ou piñata .la source
Le codage ASCII est de 7 bits, mais en pratique, les caractères codés en ASCII ne sont pas stockés dans des groupes de 7 bits. Au lieu de cela, un ASCII est stocké dans un octet, avec le MSB généralement mis à 0 (oui, il est gaspillé en ASCII).
Vous pouvez vérifier cela en entrant une chaîne dans le jeu de caractères ASCII dans un éditeur de texte, en définissant le codage sur ASCII et en affichant le binaire / hexadécimal:
A part: l'utilisation du codage (strictement) ASCII est désormais rare, au profit de l'UTF-8 (qui ne gaspille pas le MSB mentionné ci-dessus - en fait, un MSB de 1 indique que le point de code est codé avec plus d'un octet).
la source
Le code ASCII d'origine fournissait 128 caractères différents numérotés de 0 à 127. ASCII et 7 bits sont synonymes, puisque l'octet de 8 bits est l'élément de stockage commun, l'ASCII laisse de la place pour 128 caractères supplémentaires qui sont utilisés pour les langues étrangères et d'autres symboles. Mais le code 7 bits était original avant le code 8 bits. ASCII signifie code standard américain pour l'échange d'informations. Ces systèmes utilisent 8 bits de l'octet, mais il doit ensuite être transformé en un format 7 bits en utilisant des méthodes de codage telles que MIME, UUcoding et BinHex. Cela signifie que le 8 bits a été converti en caractères 7 bits, ce qui ajoute des octets supplémentaires pour les encoder.
la source
lorsque nous appelons ASCII comme code à 7 bits, le bit le plus à gauche est utilisé comme bit de signe, donc avec 7 bits, nous pouvons écrire jusqu'à 127. cela signifie de -126 à 127 car la valeur imam maximale de ASCII est de 0 à 255. cela peut être seulement satisfait de l'argument de 7 bits si le dernier bit est considéré comme un bit de signe
la source