Glossary
ASCII
L’encodage de caractères original sur 7 bits
By Buğra SözeriPublished
ASCII (American Standard Code for Information Interchange, prononcé “ass-key”) est un encodage de caractères qui mappe 128 symboles aux entiers de 0 à 127. Défini en 1963 et normalisé internationalement sous la norme ISO/IEC 646 en 1972.
Couverture :
- 0-31 : caractères de contrôle (NUL, saut de ligne, retour chariot, tabulation, échappement, sonnerie)
- 32-47 : ponctuation et symboles (espace, !, ", #, $, %, etc.)
- 48-57 : chiffres 0-9
- 58-64 : ponctuation supplémentaire (:, ;, <, =, >, ?, @)
- 65-90 : majuscules A-Z
- 97-122 : minuscules a-z
- 127 : DEL
ASCII tient dans 7 bits, c’est pourquoi les anciens protocoles série et les systèmes télégraphiques utilisaient une transmission sur 7 bits. Le 8e bit devenait le bit de parité. Les systèmes modernes utilisent 8 bits par caractère ; les 128 valeurs supérieures (128-255) sont interprétées différemment selon l’encodage choisi (Latin-1, Windows-1252, etc.).
UTF-8 est rétrocompatible avec ASCII — tout texte ASCII est un fichier UTF-8 valide avec des octets identiques. Cette compatibilité est l’une des principales raisons pour lesquelles UTF-8 a remporté la guerre des encodages Unicode.
Exemple pratique
La chaîne “Hi!” encodée en ASCII représente trois octets : H = 72 (0x48), i = 105 (0x69), ! = 33 (0x21). En binaire : 01001000 01101001 00100001. Notez que le bit le plus significatif de chaque octet est zéro — c’est la garantie des 7 bits. Comparez avec la même chaîne en UTF-16 : 0048 0069 0021 — six octets pour le même contenu, avec l’ordre des octets little-endian ajoutant un BOM au début. Comparez encore avec UTF-8 : identique à ASCII car chaque caractère est dans la plage 0-127. Maintenant essayez “café” : ASCII ne peut pas encoder le é (Unicode U+00E9) ; l’encodeur génère soit une erreur soit substitue un point d’interrogation. UTF-8 encode é comme deux octets 0xC3 0xA9 ; Latin-1 l’encode comme l’octet unique 0xE9. Le même caractère visible, trois séquences d’octets différentes selon le choix d’encodage.
Le complément d’ASCII pour le texte non anglais est Unicode, qui attribue à chaque caractère un point de code et utilise des encodages (UTF-8, UTF-16, UTF-32) pour les sérialiser en octets. UTF-8 a été spécifiquement conçu par Ken Thompson et Rob Pike en 1992 pour être compatible ASCII : tout fichier ne contenant que des caractères ASCII est identique en ASCII et en UTF-8, c’est pourquoi presque tous les protocoles réseau et formats de configuration en anglais ont pu être mis à niveau vers Unicode sans modifications incompatibles.
Quand et pourquoi cela importe
ASCII importe lors du débogage de bugs d’encodage, de la conception de protocoles réseau, ou du travail avec tout système qui traite le texte octet par octet. Le bug qui envoie un é comme “cé” ou “cé” ou “c?” est toujours une discordance ASCII/UTF-8/Latin-1 — quelque part dans le pipeline, les octets ont été décodés avec une mauvaise hypothèse. Les algorithmes de tri qui traitent les chaînes comme des octets trieront les majuscules avant les minuscules en raison de l’ordre ASCII — “Zebra” vient avant “apple” si vous triez les octets bruts, surprenant pour les utilisateurs attendant un ordre lexicographique insensible à la casse. Les règles d’identification dans les langages de programmation (noms de variables, clés JSON) sont généralement limitées à ASCII pour la portabilité entre des systèmes dont l’encodage par défaut ne peut pas être supposé. Référence : RFC 20 — Format ASCII pour l’échange réseau.
Pourquoi l’ordre de l’alphabet importe : ASCII a intentionnellement placé les majuscules (65-90) avant les minuscules (97-122) avec un décalage fixe de 32 entre elles. Activer ou désactiver le bit 5 de n’importe quel octet de lettre (le bit 0x20) change sa casse — majuscule en minuscule et vice-versa. Cette astuce bit est la raison pour laquelle chaque ancienne bibliothèque de chaînes C pouvait faire tolower() avec une seule opération arithmétique, et elle est intégrée dans d’innombrables protocoles (noms d’en-têtes HTTP, libellés DNS) qui sont nominalement insensibles à la casse mais s’appuient sur cette équivalence exacte de retournement de bit. L’astuce échoue dès que Unicode arrive — le I pointé/non pointé turc est l’exemple canonique contre-exemple.
L’héritage des caractères de contrôle que personne ne peut jeter : la plage 0-31 contient des vestiges du matériel télétype qu’aucun système moderne n’utilise mais que chaque parseur doit reconnaître. NUL (0) termine les chaînes C ; LF (10) et CR (13) séparent les lignes (Unix utilise LF, Windows utilise CRLF, l’ancien Mac OS utilisait CR seul) ; HT (9) est la tabulation ; ESC (27) démarre les séquences d’échappement des terminaux ANSI. Le caractère sonnerie (7) faisait autrefois sonner une cloche physique sur les terminaux Teletype Model 33 ; aujourd’hui il déclenche l’API de bip système sur la plupart des systèmes d’exploitation. Aucun d’eux ne serait conçu aujourd’hui — ils survivent parce que un demi-siècle de formats de fichiers et de protocoles réseau les attend. Référence : ISO/IEC 646 — Technologies de l’information — Jeu de caractères codés ISO sur 7 bits.
Frequently asked questions
- Qu’est-ce qu’ASCII ?
- ASCII (American Standard Code for Information Interchange) est un encodage de caractères sur 7 bits qui mappe 128 valeurs (0 à 127) vers des lettres, des chiffres, de la ponctuation et des caractères de contrôle. Il a été normalisé en 1963 et reste le fondement de tous les encodages de texte modernes.
- Comment ASCII est-il utilisé en pratique ?
- Tout fichier texte en anglais, URL ou en-tête HTTP qui évite les caractères étendus est de l’ASCII valide. Les protocoles d’e-mail tels que SMTP étaient à l’origine uniquement ASCII, c’est pourquoi les sujets d’e-mail non ASCII doivent être encodés avec Base64 ou quoted-printable.
- Quelle est la différence entre ASCII et UTF-8 ?
- UTF-8 est un sur-ensemble d’ASCII : les 128 premiers points de code UTF-8 sont identiques à ASCII, encodés en octets simples. UTF-8 s’étend au-delà de 128 pour couvrir plus de 1,1 million de points de code Unicode en utilisant 2 à 4 octets, tandis qu’ASCII s’arrête à 127.
- Pourquoi ASCII utilise-t-il 7 bits au lieu de 8 ?
- Le comité de 1963 a réservé le 8e bit pour la vérification de parité des erreurs sur les lignes série. Cela laissait 128 emplacements — suffisamment pour l’alphabet anglais, les chiffres, la ponctuation et les caractères de contrôle. Le 8e bit a été utilisé plus tard par des encodages étendus concurrents comme ISO-8859-1.
Related
Published May 14, 2026