Aussi disponible en : English · Español · Português · العربية
Table ASCII
Tous les caractères ASCII en décimal, hexadécimal, octal et binaire, et un décompte des caractères de contrôle que quelque chose emploie encore.
Qu’est-ce que la table ASCII ?
L’ASCII attribue un nombre de 0 à 127 à chacun de 128 caractères. Quatre-vingt-quinze sont imprimables : l’espace, les chiffres, les deux alphabets et la ponctuation d’un clavier américain. Les trente-trois autres n’impriment rien du tout. Ce sont les caractères de contrôle, et ils forment la moitié de la table que toutes les références énumèrent et que personne n’explique.
Le partage n’est pas affaire d’appréciation. Dans la base de données des caractères Unicode, ces trente-trois portent le nom littéral <control> et leurs vrais noms résident dans un fichier d’alias distinct. Cette page est générée à partir des deux : les noms, les abréviations et les noms alternatifs sont donc ceux de la norme et non ceux de la mémoire de quelqu’un.
Tout le reste, sur un ordinateur moderne, est bâti par-dessus. L’UTF-8 a été conçu pour que ses 128 premiers points de code soient exactement l’ASCII, octet pour octet : c’est pourquoi un fichier texte en anglais est à la fois de l’ASCII valide et de l’UTF-8 valide, et l’est depuis des décennies.
Comment utiliser la table
- Cherchez comme cela vous vient. Tapez 65, ou 0x41, ou la lettre A elle-même, ou carriage, ou ESC. Valeurs décimales, valeurs hexadécimales, caractères isolés, noms, abréviations et noms alternatifs : tout correspond.
- Lisez la ligne jusqu’à l’encodage qu’il vous faut. Chaque ligne porte le décimal, l’hexadécimal, l’octal et le binaire sur huit bits, complétés par des zéros pour que les colonnes s’alignent une fois copiées. Le bouton de copie donne le caractère ; pour les contrôles, qui n’en ont pas, il donne l’échappement hexadécimal.
- Regardez d’abord la section des caractères de contrôle. C’est la partie aux chiffres surprenants, et elle explique pourquoi une fin de ligne Windows fait deux octets plutôt qu’un.
Quatre des trente-trois caractères de contrôle servent encore
L’usage veut qu’on décrive les caractères de contrôle par une liste de noms sans dire lesquels comptent. Compter est plus utile, alors nous avons compté. Sur 9 760 fichiers texte et 127 721 432 caractères — ce site entier, son HTML compilé et douze livres du domaine public — exactement quatre des trente-trois apparaissent.
Le saut de ligne apparaît 434 063 fois et le retour chariot 229 147. La tabulation sort trois fois et le retour arrière deux, dans les deux cas au sein de textes qui en parlent. Les vingt-neuf autres ne sortent pas une seule fois : ni NUL, ni la sonnerie, ni l’échappement, ni la suppression, ni aucun des dix contrôles de transmission, ni les quatre contrôles de périphérique, ni les quatre séparateurs d’information.
C’est qu’il s’agissait d’instructions destinées à une machine qui n’existe plus. Un téléscripteur était une machine à écrire au bout d’un fil, et les codes lui disaient quoi faire physiquement : sonne, perfore la bande, cesse de lire, mets-toi à l’écoute. Deux ont survécu parce que deux déplaçaient du papier. Le retour chariot ramenait le chariot à la marge de gauche ; le saut de ligne faisait tourner le rouleau d’une ligne. Un téléscripteur avait besoin des deux pour commencer une nouvelle ligne, et voilà pourquoi une fin de ligne Windows fait toujours deux octets et pourquoi déplacer un fichier d’un système à l’autre peut encore l’abîmer.
Les séparateurs d’information sont le cas le plus triste. L’ASCII contient quatre caractères — séparateurs de fichier, de groupe, d’enregistrement et d’unité — prévus précisément pour le travail que le CSV fait mal, sans aucun des problèmes de guillemets et d’échappements qui font de l’analyse d’un CSV un champ de mines. Ils occupent 0x1C à 0x1F depuis 1963 et quasiment rien ne les emploie.
La norme ne s’accorde pas non plus avec elle-même
Neuf caractères ASCII portent plus d’un nom officiel, et la table les montre tous. Le plus lourd de conséquences est 0x0A, que la base Unicode inscrit comme LINE FEED, NEW LINE et END OF LINE. Trois noms dans un même fichier pour le caractère dont personne ne s’accorde sur l’usage : voilà un bon résumé du désordre des fins de ligne, puisque la norme elle-même n’a jamais tranché entre faire avancer le papier et terminer la ligne.
La tabulation est CHARACTER TABULATION et aussi HORIZONTAL TABULATION ; 0x0B est LINE TABULATION et aussi VERTICAL TABULATION. Shift out et shift in sont en outre LOCKING-SHIFT ONE et LOCKING-SHIFT ZERO, hérités d’un mécanisme de bascule entre jeux de caractères que presque personne ne croise plus.
Un cas limite mérite d’être connu. L’espace est imprimable — la base le nomme SPACE, non <control> — et pourtant c’est le seul caractère imprimable doté d’une abréviation officielle, SP, parce qu’il ne dessine rien de visible et qu’une table doit bien afficher quelque chose. C’est pour cela qu’il figure ici avec la ponctuation.
Limites honnêtes
Le décompte d’usage mesure un corpus, il n’énonce pas une loi. Ce site est du TypeScript, du HTML et de la prose anglaise : il en dit long sur l’allure du code web moderne et rien sur ce qu’émet un protocole série ou un terminal de point de vente. Les logiciels qui parlent à une imprimante, à un lecteur de codes-barres ou à un mainframe emploient sans aucun doute ces codes — c’est là que survivent les contrôles de périphérique et de transmission. Ce que le chiffre établit, c’est qu’ils ont disparu du texte ordinaire.
L’ASCII n’est par ailleurs que les 128 premiers points de code. Tout ce qui est accentué, tout ce qui relève d’une autre écriture, l’ensemble des émojis et l’immense majorité de la ponctuation d’un document réel en sortent. Si un caractère n’est pas sur cette page, l’ASCII n’a tout simplement pas de nombre pour lui et c’est l’UTF-8 qu’il vous faut — lequel commence par coïncider exactement avec cette table, puis continue.
Enfin, le caractère d’échappement mérite une mention. Il n’apparaît pas dans notre corpus mais il est loin d’être mort : c’est lui qui ouvre les séquences d’échappement de terminal qui colorent tous les outils en ligne de commande. Il ne figure pas dans le texte stocké parce qu’il appartient au fil entre un programme et un terminal, non aux fichiers.
Pourquoi est-ce gratuit ?
Parce que c’est une table de faits publics. La page est du texte statique avec un champ de recherche qui la filtre dans votre navigateur : rien n’est envoyé, rien n’est conservé, et aucun serveur n’intervient pour la lire.
Il n’y a donc ni compte, ni inscription, ni rien de réservé. Les données de base sont la base de caractères Unicode, que chacun peut télécharger, et le script qui en tire cette page se trouve dans le dépôt à côté d’elle.