American Standard Code for Information Interchange

L'American Standard Code for Information Interchange (Code américain normalisé pour l'échange d'information), plus connu sous l'acronyme ASCII (/as.ki/, ), est une norme informatique de codage de caractères apparue dans les années 1960. C'est la norme de codage de caractères la plus influente à ce jour. ASCII définit 128 codes à 7 bits, comprenant 95 caractères imprimables : les chiffres arabes de 0 à 9, les 26 lettres de l'alphabet latin en minuscules et en capitales, et des symboles mathématiques et de ponctuation. ASCII suffit pour représenter les textes en anglais, mais il est trop limité pour les autres langues, dont le français et ses lettres accentuées. Les limitations du jeu de caractères ASCII sont encore sensibles au XXIe siècle, par exemple dans le choix restreint de caractères généralement offerts pour composer une adresse électronique.

« ASCII » redirige ici. Pour les autres significations, voir ASCII (homonymie).

ISO/CEI 646-02 ou ISO/CEI 646-06 (ASCII)

Les 95 caractères imprimables d'ASCII :
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~

Famille ISO/CEI 646
Langues Anglais
Nombre de caractères 128
État du projet Norme établie
Plates-formes Toutes
Numéro d'enregistrement 002
006
038 (EBCDIC USA ASCII)
367 (IBM AIX 7-bit US-ASCII)
371 (IBM AIX 7-bit US-ASCII APL)
907 (DOS ASCII APL)
1054 (HP ASCII)
20127 (Microsoft 7-bit US-ASCII)
Licence Norme ISO payante
Séquences d'échappement 002: jeu G0: ESC 2/8 4/0
jeu G1: ESC 2/9 4/0

006: jeu G0: ESC 2/8 4/2
jeu G1: ESC 2/9 4/2

Unité de codage (codet) Sept à huit bits suffisent
Première version ISO/CEI 646-02 et ISO/CEI 646-06 (1er janvier 1975)

L'ASCII est une des variantes de la norme ISO/CEI 646. Il est inclus dans plusieurs dizaines de normes couvrant plus de caractères, qui sont parfois informellement appelées ASCII étendu. Celles-ci peuvent être régionales (ISO/CEI 8859), nationales (GB 18030) ou internationales (Unicode). Avec l'avènement de la mondialisation et de l'internationalisation des systèmes d'information, les limitations de l'ASCII ne sont plus acceptées que dans des domaines techniques qui requièrent la compatibilité avec des protocoles de communication ou systèmes anciens.

Histoire

Table ASCII dans un manuel d'imprimante de 1972.

Avant la standardisation, de nombreux codages de caractères incompatibles entre eux existaient[1]. Chaque matériel avait son propre codage, lié aux techniques qu'il utilisait. Tout ordinateur, comme l'IBM 1130, était livré avec ses sous-programmes et ses tables permettant de transposer les codes d'un matériel à un autre. D'autres standards étaient utilisés, notamment pour les cartes perforées (Bull et IBM avaient chacun leur code, mutuellement incompatibles)[2].

En 1960, l'ISO a créé le Technical Committee on Computers and Information Processing[3] (Comité technique pour les ordinateurs et le traitement de l'information). Il a été divisé en six groupes de travail :

  • Working Group A : Glossary ;
  • Working Group B : Character Sets and Coding ;
  • Working Group C : Character Recognition ;
  • Working Group D : Input and Output Media ;
  • Working Group E : Programming Languages ;
  • Working Group F : Digital Data Transmission.

L'American Standards Association (ASA, aujourd'hui ANSI) était chargée du standard des États-Unis. L'ASA a reconnu le consortium Business Equipment Manufacturers Association (BEMA, puis, CBEMA) comme le parrain du travail de standardisation du traitement des données. En 1960, BEMA a formé un groupe de traitement des données des partenaires, dont Minneapolis-Honeywell. Ce groupe a formé un Plans and Policies Committee, qui à son tour a formé l'Engineering Committee. L'Engineering Committee a formé le comité X3, qui a été reconnu par l'ASA comme Sectional Committee. Parmi les membres du comité, Bob Bemer est parfois présenté comme père de l'ASCII, ce qu'il ne faut pas comprendre comme inventeur de l'ASCII, mais comme grand artisan de la diffusion d'ASCII[4].

En 1961, le DoD met au point un code standard de transmission de donnée sur 8 bits[5]. Ce standard 8 bits est une variante des standards FIELDATA sixbits utilisés dans la décennie précédente par la défense. Il a eu une influence notable sur la première version de l'ASCII.

En 1963, la première version publiée de l'ASCII apparaît. La liste des caractères à considérer et leur position ont été débattues[6].

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'ambigüité, désignation préférée dans le registre IANA des jeux de caractères codés).

À l'époque elle a été en concurrence avec des standards incompatibles. Par la suite, l'existence de nombreux codages reprenant les conventions de l'ASCII l'a rendu très populaire. IBM, qui utilisait sur ses mainframes un autre codage, l'EBCDIC, ne commença à utiliser officiellement l'ASCII sur ses matériels qu'avec l'IBM PC, en 1981.

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. Toutefois, les ordinateurs travaillant presque tous sur un multiple de huit bits (un octet) depuis les années 1970, chaque caractère d'un texte en ASCII est souvent stocké dans un octet dont le 8e bit est 0. Aujourd'hui encore, certains systèmes de messagerie électronique et de SMS fonctionnent avec des bytes ou multiplets composés de seulement sept bits (contrairement à un octet qui est un byte ou multiplet standardisé à huit bits).

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 127 est la commande pour effacer. Le caractère numéro 32 est l'espace. Le caractère 7 provoque l'émission d'un signal sonore. Les autres caractères sont les chiffres arabes, les lettres latines majuscules et minuscules sans accent, des symboles de ponctuation, des opérateurs mathématiques et quelques autres symboles.

Limitations

L'absence des caractères des langues étrangères à l'anglais rend ce standard insuffisant à lui seul pour des textes étrangers (par exemple en langue française), ce qui rend nécessaire l'utilisation d'autres encodages.

Lorsqu'il est employé seul pour la langue anglaise, il interdit l'usage des accents dans la langue anglaise (cf. wikt:en:Appendix:English words with diacritics).

Quelques-uns des caractères graphiques ASCII ont provoqué une polysémie. Ceci est en tout ou partie lié au nombre limité de codets dans un jeu à sept bits. Ceci se retrouve notamment dans les symboles de ponctuation et l'utilisation des guillemets. L'ASCII a été conservé parce qu'il est omniprésent dans de nombreux logiciels. Cet héritage se retrouve dans Unicode où ces signes sont dans un bloc disjoint des autres symboles similaires, se trouvant pour la plupart codés à partir de U+2000[7].

Internationalisation

Les limites du standard américain ASCII ont conduit, sur trois périodes différentes, à trois approches de l'internationalisation :

  • l'utilisation de standards régionaux à caractères mesurant un octet, techniquement les plus faciles à mettre en place ;
  • l'utilisation de standards extensibles, où un même octet peut représenter un caractère différent suivant le contexte (famille ISO/CEI 2022) ainsi que des extensions où un caractère est codé sur plusieurs octets ;
  • l'utilisation du standard Unicode (famille UTF), qui est celui qui comprend le plus grand nombre de caractères.

Les standards régionaux ont l'inconvénient de ne permettre la représentation que d'un ensemble réduit de caractères, comme les caractères d'Europe occidentale. Avec cette approche, il est nécessaire d'indiquer l'encodage à l'extérieur du flot.

Les standards extensibles ont l'inconvénient d'être contextuels. Il se peut que des logiciels utilisant certains algorithmes de recherche manquent d'interopérabilité à cet égard.

Standardisation

Le jeu de codage ASCII est défini quasiment identiquement par plusieurs standards différents, a de nombreuses variantes et a donné naissance à une foison (des dizaines ou des centaines) d'extensions plus ou moins incompatibles entre elles.

Les principales extensions sont justifiées par le fait que l'ASCII ne répond pas aux divers besoins régionaux. Elles sont proposées par des organismes de normalisation, ou par des fournisseurs de produits et de services.

Les standards ASCII

N.B. — Ne pas confondre USASI X3.4-1968 ou ANSI X3.4-1968 et ANSI X3.4:1986.

Standards ASCII des États-Unis (les standards hérités, et le standard en vigueur) :

  • ASA X3.4-1963, (incomplet avec 28 positions libres, et un code de commande non assigné) ;
  • USASI X3.4-1967 (renommé rétroactivement ANSI X3.4-1967), ne normalisait pas encore toutes les positions ;
  • USASI X3.4-1968 (renommé rétroactivement ANSI X3.4-1968), ne normalisait pas encore toutes les positions ;
  • ANSI X3.4-1977 ;
  • ANSI X3.4:1986 (en 1986, et en vigueur aujourd'hui).

Les standards internationaux suivants sont généralement considérés compatibles (quasi identiques) avec le standard ASCII en vigueur de 1986 à 2011, tout en constituant une normalisation internationale officielle :

  • Norme ISO/CEI 646 :
    • ISO/CEI 646-US Variante des États-Unis,
    • Variante IRV internationale ;
  • Code page IBM 367 ;
  • Alphabet International de Référence :
    • Alphabet International de Référence no 5 (de 1988)[8],
    • Alphabet International de référence no 5 (dans le jeu G0 de l'IRV)[9].

La désignation US-ASCII, ASCII É-U ou ASCII des États-Unis est un mélange des désignations précédentes. Le registre IANA lui attribue la dénomination US-ASCII, sans en définir le codage.

Approximation, variantes et extensions

  • Norme ISO/CEI 646
    • Variante INV invariable (incomplète par rapport aux deux précédentes).

Trois types de codages de caractères se rapprochent de l'ASCII :

  • ceux qui ne changent que par la dénomination — ils sont essentiellement identiques à l'ASCII ;
  • ceux qui sont des variantes, l'ASCII étant à l'origine la variante locale aux États-Unis de l'ISO/CEI 646 ;
  • ceux qui l'augmentent, dits extensions.

Alias

En , le RFC[10] et la chambre d'enregistrement de jeux de caractères Internet Assigned Numbers Authority[11] ont reconnu les alias suivants, insensibles à la casse, convenables pour l'utilisation dans des protocoles Internet :

  • ANSI_X3.4-1968 (canonical name)
  • iso-ir-6
  • ANSI_X3.4-1986
  • ISO_646.irv:1991
  • ASCII (with ASCII-7 and ASCII-8 variants)
  • ISO646-US
  • US-ASCII (preferred MIME name)[11]
  • us
  • IBM367
  • cp367
  • csASCII

L'IANA promeut plus particulièrement la dénomination « US-ASCII » pour Internet.

Variantes

ASCII a donné naissance à certaines variantes qui conservent la plupart des caractères, mais en remplacent une partie. Dès lors, il ne s'agit plus d'ASCII à strictement parler. Outre ISO/CEI 646, on trouve d'autres variantes dans l'histoire de l'informatique. Par exemple, le circonflexe (#94) est remplacé par la flèche vers le haut et le soulignement (#95) est remplacé par la flèche vers la gauche, dans l'ensemble de caractères intégré des puces Motorola 6847 (VDG) et du GIME, qui équipaient les adapteurs vidéo du TRS-80 Color Computer et d'autres anciens ordinateurs des années 1980. Mais plusieurs années plus tôt, les ordinateurs Xerox équipés du langage de programmation Smalltalk incluaient les mêmes deux caractères (en mode graphique).

Par ailleurs, certains anciens ordinateurs n'étaient équipés que du deux tiers d'ASCII, c'est-à-dire les caractères 32 à 95 plutôt que 32 à 126. C'est alors à proprement parler une variante à 6 bits. Sur l'Ordinateur Couleur, on mettait dans les fichiers les codes 32 à 127, mais ceux de 96 à 127 étaient des versions en couleurs inversées (vert sur noir plutôt que noir sur vert). Ces blocs de 32 caractères étaient échangés au moment d'envoyer au VDG, pour lequel les codes ASCII 32 à 63 étaient numérotés 96 à 127, tandis que les 0 à 63 étaient en couleurs inversées (en soustrayant 64). En outre, les codes 128 à 255 encodaient des formes de blocs en couleurs. Le GIME était capable de fonctionner soit comme le VDG, soit en mode ASCII, avec circonflexe #94, soulignement #95. Il avait aussi en option sa propre extension 8-bit pour les lettres accentuées minuscules et majuscules, compatible avec probablement aucun autre ordinateur (en plus d'être impossibles à insérer autrement que par n° dans le code source BASIC).

Certaines extensions 7-bit ont un caractère #127, comme les premiers Apple, qui y avaient un quadrillé, et les cartes vidéo PC (Page de code 437) qui y avaient une sorte de pentagone, en plus de remplir les cases 0 à 31 de flèches, cercles et signes divers. Naturellement, on ne pouvait pas utiliser ces codes dans les contextes où ils avaient une signification de contrôle ; et inversement, lorsque des codes de contrôle n'étaient pas interprétés comme tels, comme quand le #27 est censé signifier commencer une séquence VT100 (ANSI.SYS) mais apparaît comme une flèche vers la gauche (par exemple, ).

Huitième bit et augmentations

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.

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/CEI 8859-1 et de l'Unicode[12].

Extensions mono-octets

En particulier, beaucoup de pages de code étendent l'ASCII en utilisant le 8e 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/CEI 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 l'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/CEI 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 différencier l'ASCII d'un standard plus étendu.

Extensions asiatiques, à base de séquences d'échappement

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).

Voir notamment ISO/CEI 2022.

Extensions Unicode

La version 1.0 a été 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. Dans la norme Unicode, le standard ASCII est défini sous le nom de « C0 Controls and Basic Latin ».

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).

Influence

L'ASCII a eu une influence importante dans le monde informatique. En particulier, il a longtemps limité les caractères disponibles aux caractères latins non accentués, notamment dans le monde de l'Internet, que ce soit pour les noms de domaine, les adresses de courrier électronique, les caractères disponibles dans le BIOS, ou les caractères dans lesquels peuvent être écrits des programmes informatiques.

Description

Table des 128 caractères ASCII

Table de correspondance ASCII.

On peut aussi présenter la table des caractères ASCII sous cette forme plus condensée qui met en évidence une organisation fondée sur la base 16.

PDF : en
  
0123456789ABCDEF
U+0000  
NUL
 
SOH
 
STX
 
ETX
 
EOT
 
ENQ
 
ACK
 
BEL
 
BS
 
HT
 
LF
 
VT
 
FF
 
CR
 
SO
 
SI
U+0010  
DLE
 
DC1
 
DC2
 
DC3
 
DC4
 
NAK
 
SYN
 
ETB
 
CAN
 
EM
 
SUB
 
ESC
 
FS
 
GS
 
RS
 
US
U+0020  
SP
! " # $ % & ' ( ) * + , - . /
U+0030 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
U+0040 @ A B C D E F G H I J K L M N O
U+0050 P Q R S T U V W X Y Z [ \ ] ^ _
U+0060 ` a b c d e f g h i j k l m n o
U+0070 p q r s t u v w x y z { | } ~  
DEL

Dans la table détaillée suivante, les 32 caractères de contrôle (codes 0 à 31 et 127) et l'espace (code 32) sont présentés avec leur nom en anglais suivi d'une traduction entre parenthèses.

Code en base Caractère Signification
10 8 16 2
0000 0000000NUL Null (nul)
10101 0000001SOH Start of Heading (début d'en-tête)
20202 0000010STX Start of Text (début de texte)
30303 0000011ETX End of Text (fin de texte)
40404 0000100EOT End of Transmission (fin de transmission)
50505 0000101ENQ Enquiry (demande)
60606 0000110ACK Acknowledge (accusé de réception)
70707 0000111BEL Bell (sonnerie)
801008 0001000BS Backspace (espacement arrière/supprimer)
901109 0001001HT Horizontal Tab (tabulation horizontale)
100120A 0001010LF Line Feed (saut de ligne)
110130B 0001011VT Vertical Tab (tabulation verticale)
120140C 0001100FF Form Feed (saut de page)
130150D 0001101CR Carriage Return (retour chariot/retour à la ligne)
140160E 0001110SO Shift Out (code spécial)
150170F 0001111SI Shift In (code standard)
1602010 0010000DLE Data Link Escape (échappement en transmission)
1702111 0010001DC1 Device Control 1 à 4 (contrôle de périphérique)
1802212 0010010DC2
1902313 0010011DC3
2002414 0010100DC4
2102515 0010101NAK Negative Acknowledge (accusé de réception négatif)
2202616 0010110SYN Synchronous Idle (attente synchronisée)
2302717 0010111ETB End of Transmission Block (fin de bloc de transmission)
2403018 0011000CAN Cancel (annulation)
2503119 0011001EM End of Medium (fin de support)
260321A 0011010SUB Substitute (remplacement)
270331B 0011011ESC Escape (échappement)
280341C 0011100FS File Separator (séparateur de fichier)
290351D 0011101GS Group Separator (séparateur de groupe)
300361E 0011110RS Record Separator (séparateur d'enregistrement)
310371F 0011111US Unit Separator (séparateur d'unité)
3204020 0100000SP Space (espacement)
3304121 0100001 ! Point d'exclamation
3404222 0100010" Guillemet
3504323 0100011# Croisillon[9]
3604424 0100100$ Dollar
3704525 0100101 % Pour cent
3804626 0100110& Esperluette[9]
3904727 0100111' Apostrophe[13]
4005028 0101000( Parenthèse ouvrante
4105129 0101001) Parenthèse fermante
420522A 0101010* Astérisque
430532B 0101011+ Plus
440542C 0101100, Virgule
450552D 0101101- Trait d'union, moins[9]
460562E 0101110. Point
470572F 0101111/ Barre oblique
4806030 01100000 Chiffre zéro
4906131 01100011 Chiffre un
5006232 01100102 Chiffre deux
5106333 01100113 Chiffre trois
5206434 01101004 Chiffre quatre
5306535 01101015 Chiffre cinq
5406636 01101106 Chiffre six
5506737 01101117 Chiffre sept
5607038 01110008 Chiffre huit
5707139 01110019 Chiffre neuf
580723A 0111010 : Deux-points
590733B 0111011 ; Point-virgule
600743C 0111100< Inférieur
610753D 0111101= Égal
620763E 0111110> Supérieur
630773F 0111111 ? Point d'interrogation
64010040 1000000@ Arobase[9]
65010141 1000001A Lettre latine capitale A
66010242 1000010B Lettre latine capitale B
67010343 1000011C Lettre latine capitale C
68010444 1000100D Lettre latine capitale D
69010545 1000101E Lettre latine capitale E
70010646 1000110F Lettre latine capitale F
71010747 1000111G Lettre latine capitale G
72011048 1001000H Lettre latine capitale H
73011149 1001001I Lettre latine capitale I
7401124A 1001010J Lettre latine capitale J
7501134B 1001011K Lettre latine capitale K
7601144C 1001100L Lettre latine capitale L
7701154D 1001101M Lettre latine capitale M
7801164E 1001110N Lettre latine capitale N
7901174F 1001111O Lettre latine capitale O
80012050 1010000P Lettre latine capitale P
81012151 1010001Q Lettre latine capitale Q
82012252 1010010R Lettre latine capitale R
83012353 1010011S Lettre latine capitale S
84012454 1010100T Lettre latine capitale T
85012555 1010101U Lettre latine capitale U
86012656 1010110V Lettre latine capitale V
87012757 1010111W Lettre latine capitale W
88013058 1011000X Lettre latine capitale X
89013159 1011001Y Lettre latine capitale Y
9001325A 1011010Z Lettre latine capitale Z
9101335B 1011011[ Crochet ouvrant
9201345C 1011100\ Barre oblique inversée
9301355D 1011101] Crochet fermant
9401365E 1011110^ Accent circonflexe (avec chasse)
9501375F 1011111_ Tiret bas[9]
96014060 1100000` Accent grave (avec chasse)[14]
97014161 1100001a Lettre latine minuscule a
98014262 1100010b Lettre latine minuscule b
99014363 1100011c Lettre latine minuscule c
100014464 1100100d Lettre latine minuscule d
101014565 1100101e Lettre latine minuscule e
102014666 1100110f Lettre latine minuscule f
103014767 1100111g Lettre latine minuscule g
104015068 1101000h Lettre latine minuscule h
105015169 1101001i Lettre latine minuscule i
10601526A 1101010j Lettre latine minuscule j
10701536B 1101011k Lettre latine minuscule k
10801546C 1101100l Lettre latine minuscule l
10901556D 1101101m Lettre latine minuscule m
11001566E 1101110n Lettre latine minuscule n
11101576F 1101111o Lettre latine minuscule o
112016070 1110000p Lettre latine minuscule p
113016171 1110001q Lettre latine minuscule q
114016272 1110010r Lettre latine minuscule r
115016373 1110011s Lettre latine minuscule s
116016474 1110100t Lettre latine minuscule t
117016575 1110101u Lettre latine minuscule u
118016676 1110110v Lettre latine minuscule v
119016777 1110111w Lettre latine minuscule w
120017078 1111000x Lettre latine minuscule x
121017179 1111001y Lettre latine minuscule y
12201727A 1111010z Lettre latine minuscule z
12301737B 1111011{ Accolade ouvrante
12401747C 1111100| Barre verticale
12501757D 1111101} Accolade fermante
12601767E 1111110~ Tilde
12701777F 1111111DEL Delete (effacement)

Caractères de contrôle

ASCII réserve les 32 premiers codes (nombres décimaux de 0 à 31) pour les caractères de contrôle : codes destinés non à représenter des informations imprimables, mais plutôt à contrôler des périphériques (tels que des imprimantes) qui utilisent ASCII ou à fournir des méta-informations sur les flux de données, tels que ceux stockés sur bande magnétique.

BinaireOct.Déc.Hex.Abréviation[note 1][note 2][note 3]Nom (1967)
196319651967
000 0000000000 NULLNUL^@\0Caractère nul
000 0001001101 SOMSOH^ACaractère de début d'en-tête
000 0010002202 EOASTX^BCaractère de début de texte
000 0011003303 EOMETX^CCaractère de fin de texte
000 0100004404 EOT^DCaractère de fin de transmission
000 0101005505 WRUENQ^ECaractère de demande de renseignement
000 0110006606 RUACK^FCaractère d'acquittement
000 0111007707 BELLBEL^G\aCaractère d'appel
000 1000010808 FE0BS^H\bCaractère de retour arrière[note 4],[note 5]
000 1001011909 HT/SKHT^I\tCaractère de tabulation horizontale[note 6]
000 1010012100A LF^J\nCaractère de saut de ligne
000 1011013110B VTABVT^K\vCaractère de tabulation verticale
000 1100014120C FF^L\fCaractère de changement de page
000 1101015130D CR^M\rCaractère de retour chariot[note 7]
000 1110016140E SO^NShift Out
000 1111017150F SI^OShift In
001 00000201610 DC0DLE^PData Link Escape
001 00010211711 DC1^QDevice Control 1 (souvent XON)
001 00100221812 DC2^RDevice Control 2
001 00110231913 DC3^SDevice Control 3 (souvent XOFF)
001 01000242014 DC4^TDevice Control 4
001 01010252115 ERRNAK^UNegative Acknowledgement
001 01100262216 SYNCSYN^VSynchronous Idle
001 01110272317 LEMETB^WEnd of Transmission Block
001 10000302418 S0CAN^XCancel
001 10010312519 S1EM^YEnd of Medium
001 1010032261A S2SSSUB^ZSubstitute
001 1011033271B S3ESC^[\e[note 8]Escape[note 9]
001 1100034281C S4FS^\File Separator
001 1101035291D S5GS^]Group Separator
001 1110036301E S6RS^^[note 10]Record Separator
001 1111037311F S7US^_Unit Separator
111 11111771277F DEL^?Delete[note 11],[note 5]
NUL

Null : nul. Il est à l'origine une NOP, c'est-à-dire 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[15].

DEL

Delete : effacement. Lui donner le code 127 (1111111 en binaire) permettait de supprimer a posteriori un caractère sur les bandes perforées qui codaient les informations sur 7 bits. N'importe quel caractère pouvait être transformé en DEL en complétant la perforation des 7 bits qui le composaient.

LF, CR

Line Feed : saut de ligne, Carriage Return : retour chariot. Dans un fichier texte, la fin d'une ligne est représentée par un ou deux caractères de contrôle. Plusieurs conventions existent :

Ainsi, lorsqu'on transfère un fichier ASCII entre des systèmes ayant des conventions de fin de ligne différentes, il faut convertir les fins de ligne pour pouvoir manipuler le fichier confortablement sur le système cible. Autrement, il faut utiliser un éditeur de texte capable de gérer les diverses conventions de fin de ligne, ce qui n'est par exemple pas le cas du classique Bloc-notes de Microsoft Windows. Les programmes utilisant les fichiers ASCII ne sont en général pas perturbés par un changement de type de fin de ligne.

SUB

Substitute : remplacement. Il est souvent associé à la combinaison de touches Ctrl + z et est utilisé dans les communications séries pour permettre l'envoi des données en lieu et place de la touche entrée.

Caractères imprimables

Les codes 20hex à 7Ehex, appelés caractères imprimables, représentent des lettres, des chiffres, des signes de ponctuation et quelques symboles divers. Il y a 95 caractères imprimables au total.

Le code 20hex, le caractère espace, désigne l'espace entre les mots, tel que produit par la barre d'espace d'un clavier. Le caractère espace étant considéré comme un graphique invisible (plutôt que comme caractère de contrôle[16]:223,[17]), il est répertorié dans le tableau ci-dessous et non dans la section précédente.

Le code 7Fhex correspond au caractère d'effacement (DEL) n'est pas imprimable et est donc omis de ce tableau. Il est inclus dans le tableau de la section précédente.

Binaire Oct. Déc. Hex. Glyphe
1963 1965 1967
010 00000403220 espace
010 00010413321!
010 00100423422"
010 00110433523#
010 01000443624$
010 01010453725%
010 01100463826&
010 01110473927'
010 10000504028(
010 10010514129)
010 1010052422A*
010 1011053432B+
010 1100054442C,
010 1101055452D-
010 1110056462E.
010 1111057472F/
Binaire Oct. Déc. Hex. Glyphe
1963 1965 1967
011 000006048300
011 000106149311
011 001006250322
011 001106351333
011 010006452344
011 010106553355
011 011006654366
011 011106755377
011 100007056388
011 100107157399
011 1010072583A:
011 1011073593B;
011 1100074603C<
011 1101075613D=
011 1110076623E>
011 1111077633F?
Binaire Oct. Déc. Hex. Glyphe
1963 1965 1967
100 00001006440@`@
100 00011016541A
100 00101026642B
100 00111036743C
100 01001046844D
100 01011056945E
100 01101067046F
100 01111077147G
100 10001107248H
100 10011117349I
100 1010112744AJ
100 1011113754BK
100 1100114764CL
100 1101115774DM
100 1110116784EN
100 1111117794FO
Binaire Oct. Déc. Hex. Glyphe
1963 1965 1967
101 00001208050P
101 00011218151Q
101 00101228252R
101 00111238353S
101 01001248454T
101 01011258555U
101 01101268656V
101 01111278757W
101 10001308858X
101 10011318959Y
101 1010132905AZ
101 1011133915B[
101 1100134925C\~\
101 1101135935D]
101 1110136945E^
101 1111137955F_
Binaire Oct. Déc. Hex. Glyphe
1963 1965 1967
110 00001409660 @`
110 00011419761 a
110 00101429862 b
110 00111439963 c
110 010014410064 d
110 010114510165 e
110 011014610266 f
110 011114710367 g
110 100015010468 h
110 100115110569 i
110 10101521066A j
110 10111531076B k
110 11001541086C l
110 11011551096D m
110 11101561106E n
110 11111571116F o
Binaire Oct. Déc. Hex. Glyphe
1963 1965 1967
111 000016011270 p
111 000116111371 q
111 001016211472 r
111 001116311573 s
111 010016411674 t
111 010116511775 u
111 011016611876 v
111 011116711977 w
111 100017012078 x
111 100117112179 y
111 10101721227A z
111 10111731237B {
111 11001741247C  ACK¬|
111 11011751257D }
111 11101761267E  ESC|~

Notes

  1. Les caractères Unicode de la zone U+2400 à U+2421 sont réservés pour représenter les caractères de contrôle quand il est nécessaire de les imprimer ou de les afficher plutôt que de les laisser jouer leur fonction prévue. Certains navigateurs peuvent ne pas les afficher correctement.
  2. Le caret est souvent utilisé pour représenter les caractères de contrôle sur un terminal. Sur la plupart des terminaux texte, tenir enfoncée la touche Ctrl tout en tapant le second caractère imprimera le caractère de contrôle. Parfois la touche majuscule n'est pas utile, par exemple ^@ peut être tapé avec seulement Ctrl et 0.
  3. Séquences d'échappement en C et dans beaucoup d'autres langages influencés par lui, tels que Java et Perl (bien que toutes les implémentations ne supportent pas nécessairement toutes les séquences d'échappement).
  4. Le caractère Backspace peut aussi être entré en appuyant sur la touche Backspace de certains claviers.
  5. L'ambiguïté de Backspace est due aux premiers terminaux conçus en supposant que l'utilisation principale du clavier serait de perforer manuellement la bande de papier sans être connecté à un ordinateur. Pour supprimer le caractère précédent, il fallait sauvegarder le poinçon de bande de papier, qui pour des raisons mécaniques et de simplicité était un bouton sur le poinçon lui-même et non le clavier, puis taper le caractère d'effacement. Ils ont donc placé une clé produisant un effacement à l'emplacement utilisé sur les machines à écrire pour le retour arrière. Lorsque les systèmes utilisaient ces terminaux et fournissaient une édition en ligne de commande, ils devaient utiliser le code rubout pour effectuer un retour arrière et n'interprétaient souvent pas le caractère de retour arrière (ils pouvaient faire écho à ^H pour revenir en arrière). D'autres terminaux non conçus pour la bande de papier ont fait la clé à cet endroit pour produire Backspace, et les systèmes conçus pour ceux-ci ont utilisé ce caractère pour sauvegarder. Étant donné que le code de suppression produit souvent un effet de retour arrière, cela oblige également les fabricants de terminaux à faire en sorte que n'importe quelle touche Delete produise autre chose que le caractère Delete.
  6. Le caractère de tabulation peut aussi être entré en appuyant sur la touche de tabulation Tab sur la plupart des claviers.
  7. Le caractère de retour de chariot peut aussi être entré en appuyant sur la touche d'entrée (Entrée) sur la plupart des claviers.
  8. La séquence d'échappement \e ne fait pas partie des spécifications de l'ANSI C et de beaucoup d'autres langages. Cependant, elle est comprise par plusieurs compilateurs, dont GCC.
  9. Le caractère d'échappement peut aussi être entré en appuyant sur la touche Esc de certains claviers.
  10. ^^ signifie Ctrl + ^ (en appuyant sur les touches "Ctrl" et caret).
  11. Le caractère d'effacement peut parfois être entré en appuyant sur la touche Backspace sur certains claviers.

Références

  1. http://www.trailing-edge.com/~bobbemer/SURVEY.HTM
  2. Pascal Becker, Histoire des supports informatiques (lire en ligne)
  3. http://discover.lib.umn.edu/cgi/f/findaid/findaid-idx?c=umfa;cc=umfa;rgn=main;view=text;didno=cbi00067
  4. « That Troublesome "Father of" » (version du 2 octobre 2017 sur l'Internet Archive), sur www.bobbemer.com
  5. Appendix §A.6.8 de la norme de A963
  6. « Character histories - notes on some Ascii code positions », sur jkorpela.fi (consulté le )
  7. (fr) Unicode 5.0 en pratique, chapitre 7 « Ponctuation », Patrick Andries.
  8. Alphabet International de référence no 5 : RECOMMANDATION T50, Union international des télécommunications, (lire en ligne)
  9. Alphabet International de référence : ANCIEN ALPHABET INTERNATIONAL no 5 ou AI5, RECOMMANDATION T50, Union international des télécommunications, (lire en ligne)
  10. (en) K. Simonsen, Rationel Almen Planlaegning, Request for comments: 1345 : Character Mnemonics & Character Sets, Network Working Group, (lire en ligne).
  11. Internet Assigned Numbers Authority (May 14, 2007). "Character Sets". Accessed 2008-04-14.
  12. Roman Czyborra, « ISO 8859-1 and MCS, from ISO 8859 Alphabet Soup », sur czyborra.com
  13. La norme ANSI X3.4 définit le caractère 39 par apostrophe (closing single quotation mark, acute accent) et les anciennes tables de caractères le représentaient souvent incliné. Les encodages plus récents restreignent ce code à la représentation de l'apostrophe verticale (ni penchée à droite, ni à gauche, mais neutre). Voir (en) Latin-1's apostrophe, grave accent, acute accent.
  14. Le code 96 est également employé comme guillemet ouvrant simple en ASCII. En Unicode, il existe un code plus approprié.
  15. (en) ASCII character set
  16. (en) Charles E. Mackenzie, The Systems Programming Series, Addison-Wesley Publishing Company, Inc., , 6, 66, 211, 215, 217, 220, 223, 228, 236–238, 243–245, 247–253, 423, 425–428, 435–439 p. (ISBN 0-201-14460-3, LCCN 77-90165, lire en ligne)
  17. (en) Vinton Gray Cerf, « ASCII format for Network Interchange », Network Working Group, (NB : quasiment identique à l'USAS X3.4-1968 mis-à-part l'introduction.)

Voir aussi

Articles connexes

Bibliographie

  • (en) Business Equipment Manufacturer Associations, American Standard Code for Information Interchange : ASA standard X3.4-1963, American Standards Asociation Incorporated, (lire en ligne)
  • (en) Eric Fischer, The Evolution of Character Codes, 1874-1968, .transbay.net (lire en ligne)
  • (en) American Standard Code for Information Interchange, AMERICAN STANDARDS ASSOCIATION, , 12 p. (lire en ligne)
  • Portail de l’informatique
  • Portail de l’écriture
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.