American Standard Code for Information Interchange

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

Les 95 caractères ASCII affichables.

Le jeu de caractères codés ASCII [askiː] (American Standard Code for Information Interchange « Code américain normalisé pour l'échange d'information ») est la norme de codage de caractères en informatique la plus connue, la plus ancienne et la plus largement compatible. ASCII contient les caractères nécessaires pour écrire en anglais.

Elle a été inventée par l'américain Bob Bemer en 1961. Sa dernière version stabilisée a été normalisée par l’ANSI en 1986 sous la désignation ANSI X3.4:1986 (après deux autres versions en 1967 et 1968, historiquement normalisées par l’ASI, devenu ANSI mais qui ne normalisait pas encore toutes les positions). C’est également la variante américaine des jeux de caractères codés selon la norme ISO/CEI 646 avec laquelle on la confond souvent (d’où sa désignation également comme US-ASCII pour lever l’ambiguité, désignation préférée dans le registre IANA des jeux de caractères codés).

Elle est à la base de nombreuses autres normes nationales ou internationales qui l’étendent, telles que ISO/CEI 8859, GB 18030 et ISO/CEI 10646 ou Unicode.

Principes

L'ASCII définit 128 caractères numérotés de 0 à 127 et codés en binaire de 0000000 à 1111111. Sept bits suffisent donc pour représenter un caractère codé en ASCII. Toutefois, les ordinateurs travaillant presque tous sur huit bits (un octet) depuis les années 1970, chaque caractère d'un texte en ASCII est stocké dans un octet dont le 8 bit est 0.

Les caractères de numéro 0 à 31 et le 127 ne sont pas affichables ; ils correspondent à des commandes de contrôle de terminal informatique. Le caractère numéro 32 est l'espace. Les autres caractères sont les chiffres arabes, les lettres latines majuscules et minuscules et quelques symboles de ponctuation.

Extensions

De nombreuses normes de codage de caractères ont repris les codes ASCII et ajouté d’autres caractères pour les codes supérieurs à 127. En particulier, beaucoup de pages de codes étendent l'ASCII en utilisant le 8 bit pour définir des caractères numérotés de 128 à 255. La norme ISO/CEI 8859 fournit des extensions pour diverses langues. Par exemple, l’ISO 8859-1, aussi appelée Latin-1, étend l’ASCII avec les caractères accentués utiles aux langues originaires d’Europe occidentale comme le français ou l’allemand.

Par abus de langage, on appelle souvent « ASCII » des normes qui étendent ASCII, mais qui ne sont pas compatibles entre elles (et parfois même ne sont pas compatibles sur leurs 128 premiers caractères codés). En particulier, les standards Windows-1252 (couramment utilisé sur Microsoft Windows dans les pays occidentaux), ISO 8859-1 (couramment utilisé sur Internet et UNIX) et les pages de code pour PC numéro 437 et 850 (couramment utilisées sur DOS) ne sont pas la norme ASCII. Cet abus de langage ne va pas sans causer des confusions causant des incompatibilités, souvent rendues visibles par le fait que les caractères non ASCII comme les « lettres accentuées » (éÈç) s'affichent mal. On écrit parfois ASCII de base pour bien identifier ASCII, et pas un standard plus étendu.

Afin d’unifier les différents codages de caractères complétant l'ASCII et y intégrer les codages complètement différents (le JIS pour le japonais par exemple, qui bien que développé aussi sur la base de l’US-ASCII, en diffère dans l’assignation d’un des 128 premiers codets), la norme ISO/CEI 10646 a été inventée (et aussi développée au départ séparément par le Consortium Unicode dans une version de sa norme Unicode 1.0 initialement incompatible avec ISO/CEI 10646, mais abandonnée depuis la version 1.1 afin d’unifier et fusionner les deux répertoires dans un jeu universel de caractères codés). ISO/CEI 10646 codifie des dizaines de milliers de caractères, mais les 128 premiers restent compatibles avec ASCII (dans sa dernière version X3.4-1986) ; la norme Unicode y ajoute des sémantiques supplémentaires.

Toutefois, certains pays d’Asie orientale (la République populaire de Chine, les anciens dominions britannique et portugais en Chine, de Hong Kong et Macao, qui sont devenus depuis des régions administratives spéciales de Chine, la République de Chine à Taïwan, et le Japon) ont choisi de continuer à développer leur propre norme pour coder le jeu de caractères universel, tout en choisissant de les maintenir entièrement convertibles avec l’ISO/CEI 10646 ; parmi ces normes asiatiques, seule la norme nationale japonaise continue à maintenir une différence dans ses 128 premières positions avec le jeu ASCII, en codant le symbole monétaire du yen à la place de la barre oblique inversée (comme c’est aussi le cas dans la variante japonaise de la norme ISO/CEI 646).

Parmi les nombreuses extensions 8 bits de l'ASCII, le Multinational Character Set créé par Digital Equipment Corporation pour le terminal informatique VT220 est considéré comme à la fois l'ancêtre de l'ISO 8859-1 et de l'Unicode.

Table des 128 caractères ASCII

Dans cette table, les 33 caractères de contrôle (codes 0 à 31 et 127) sont présentés avec leur nom en anglais suivi d'une traduction entre parenthèses.

Code en baseCaractèreSignification
108162
00000000000NULNull (nul)
101010000001SOHStart of Header (début d'en-tête)
202020000010STXStart of Text (début du texte)
303030000011ETXEnd of Text (fin du texte)
404040000100EOTEnd of Transmission (fin de transmission)
505050000101ENQEnquiry (demande)
606060000110ACKAcknowledge (accusé de réception)
707070000111BELBell (caractère d'appel)
8010080001000BSBackspace (espacement arrière)
9011090001001HTHorizontal Tab (tabulation horizontale)
100120A0001010LFLine Feed (saut de ligne)
110130B0001011VTVertical Tab (tabulation verticale)
120140C0001100FFForm Feed (saut de page)
130150D0001101CRCarriage Return (retour chariot)
140160E0001110SOShift Out (fin d'extension)
150170F0001111SIShift In (démarrage d'extension)
16020100010000DLEData Link Escape
17021110010001DC1Device Control 1 à 4 (DC1 et DC3 sont généralement utilisés pour coder XON et XOFF dans un canal de communication duplex)
18022120010010DC2
19023130010011DC3
20024140010100DC4
21025150010101NAKNegative Acknowledge (accusé de réception négatif)
22026160010110SYNSynchronous Idle
23027170010111ETBEnd of Transmission Block (fin du bloc de transmission)
24030180011000CANCancel (annulation)
25031190011001EMEnd of Medium (fin de support)
260321A0011010SUBSubstitute (substitution)
270331B0011011ESCEscape (échappement)
280341C0011100FSFile Separator (séparateur de fichier)
290351D0011101GSGroup Separator (séparateur de groupe)
300361E0011110RSRecord Separator (séparateur d'enregistrement)
310371F0011111USUnit Separator (séparateur d'unité)
32040200100000SPEspace (Space en anglais)
33041210100001!Point d'exclamation
34042220100010"Guillemet droit
35043230100011Croisillon et parfois Dièse
36044240100100$Dollar (symbole)
37045250100101%Pourcent
38046260100110&Esperluette
39047270100111'Apostrophe (guillemet fermant simple ou accent aigu)
40050280101000(Parenthèse ouvrante
41051290101001)Parenthèse fermante
420522A0101010*Astérisque
430532B0101011
Plus
440542C0101100,Virgule
450552D0101101-Moins
460562E0101110.Point
470572F0101111/Barre oblique (Slash en anglais)
480603001100000Le chiffre zéro
490613101100011Le chiffre un
500623201100102Le chiffre deux
510633301100113Le chiffre trois
520643401101004Le chiffre quatre
530653501101015Le chiffre cinq
540663601101106Le chiffre six
550673701101117Le chiffre sept
560703801110008Le chiffre huit
570713901110019Le chiffre neuf
580723A0111010:Deux-points
590733B0111011;Point-virgule
600743C0111100<Inférieur
610753D0111101=Égal
620763E0111110>Supérieur
630773F0111111?Point d'interrogation
640100401000000@Arrobe
650101411000001A
660102421000010B
670103431000011C
680104441000100D
690105451000101E
700106461000110F
710107471000111G
720110481001000H
730111491001001I
7401124A1001010J
7501134B1001011K
7601144C1001100L
7701154D1001101M
7801164E1001110N
7901174F1001111O
800120501010000P
810121511010001Q
820122521010010R
830123531010011S
840124541010100T
850125551010101U
860126561010110V
870127571010111W
880130581011000X
890131591011001Y
9001325A1011010Z
9101335B1011011[Crochet ouvrant
9201345C1011100\Barre oblique inversée (backslash en anglais) ; également nommée Antislash
9301355D1011101]Crochet fermant
9401365E1011110^Accent circonflexe
9501375F1011111_Tiret bas ou souligné (underscore en anglais)
960140601100000`Accent grave
970141611100001a
980142621100010b
990143631100011c
1000144641100100d
1010145651100101e
1020146661100110f
1030147671100111g
1040150681101000h
1050151691101001i
10601526A1101010j
10701536B1101011k
10801546C1101100l
10901556D1101101m
11001566E1101110n
11101576F1101111o
1120160701110000p
1130161711110001q
1140162721110010r
1150163731110011s
1160164741110100t
1170165751110101u
1180166761110110v
1190167771110111w
1200170781111000x
1210171791111001y
12201727A1111010z
12301737B1111011{Accolade ouvrante
12401747C1111100|Barre verticale
12501757D1111101}Accolade fermante
12601767E1111110~Tilde
12701777F1111111DELDelete (effacement)

Caractères de contrôle

NULL

Originellement une NOP, un caractère à ignorer. Lui donner le code 0 permettait de prévoir des réserves sur les bandes perforées en laissant des zones sans perforation pour insérer de nouveaux caractères a posteriori. Avec le développement du langage C il a pris une importance particulière quand il a été utilisé comme indicateur de fin de chaîne de caractères.

SOH

Start of heading : début d'en-tête. Il est aujourd'hui souvent utilisé dans les communications séries pour permettre la synchronisation après erreur.

DEL

Delete : effacement. Lui donner le code 127 permettait de supprimer a posteriori un caractère sur les bandes perforées qui codaient les informations sur 7 bits.

LF, CR, fin de ligne

Dans un fichier texte, la fin d'une ligne est représentée par un caractère de contrôle (ou une paire). Plusieurs conventions coexistent :

  • sous les systèmes Multics, Unix, Type Unix (Linux, AIX, Xenix, Mac OS X, etc.), BeOS, AmigaOS, RISC OS entre autres, la fin de ligne est indiquée par un saut de ligne (LF) ;
  • sous les machines Apple II et Mac OS jusqu'à la version 9, la fin de ligne est indiquée par un retour chariot (CR) ;
  • sous les systèmes DEC, RT-11 et généralement tous les premiers systèmes non-Unix et non-IBM, CP/M, MP/M, MS-DOS, OS/2 ou Microsoft Windows, la fin de ligne est indiquée par un retour chariot suivi d'un saut de ligne (CR+LF, 2 octets).

Ainsi, lorsque l'on ouvre un fichier ASCII créé par un système sur un autre système, il faut en général faire de la mise en forme (c'est-à-dire refaire les fins de ligne) afin de pouvoir l'afficher et le lire de manière confortable. Mais les éditeurs de texte intelligents (ce qui n'est pas le cas du classique Notepad même sur les derniers Windows) peuvent détecter le type de fin de ligne et agir en conséquence. Les programmes utilisant les fichiers ASCII ne sont en général pas perturbés par un changement de type de fin de ligne.