American Standard Code for Information Interchange
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’ambigüité, 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.
Sommaire |
[modifier] 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 un multiple de huit bits (multiple d'un octet) depuis les années 1970, chaque caractère d'un texte en ASCII est stocké dans un octet dont le 8e 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.
[modifier] 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 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 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[1].
[modifier] Table des 128 caractères ASCII
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
A
|
B
|
C
|
D
|
E
|
F
|
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
000
|
NUL
|
SOH
|
STX
|
ETX
|
EOT
|
ENQ
|
ACK
|
VT
|
FF
|
SO
|
SI
|
|||||
|
001
|
DLE
|
DC1
|
DC2
|
DC3
|
DC4
|
NAK
|
SYN
|
ETB
|
CAN
|
EM
|
SUB
|
FS
|
GS
|
RS
|
US
|
|
|
002
|
||||||||||||||||
|
003
|
||||||||||||||||
|
004
|
||||||||||||||||
|
005
|
||||||||||||||||
|
006
|
||||||||||||||||
|
007
|
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 base | Caractère | Signification | |||
|---|---|---|---|---|---|
| 10 | 8 | 16 | 2 | ||
| 0 | 0 | 00 | 0000000 | NUL | Null (nul) |
| 1 | 01 | 01 | 0000001 | SOH | Start of Header (début d'en-tête) |
| 2 | 02 | 02 | 0000010 | STX | Start of Text (début du texte) |
| 3 | 03 | 03 | 0000011 | ETX | End of Text (fin du texte) |
| 4 | 04 | 04 | 0000100 | EOT | End of Transmission (fin de transmission) |
| 5 | 05 | 05 | 0000101 | ENQ | Enquiry (End of Line) (demande, fin de ligne) |
| 6 | 06 | 06 | 0000110 | ACK | Acknowledge (accusé de réception) |
| 7 | 07 | 07 | 0000111 | BEL | Bell (caractère d'appel) |
| 8 | 010 | 08 | 0001000 | BS | Backspace (espacement arrière) |
| 9 | 011 | 09 | 0001001 | HT | Horizontal Tab (tabulation horizontale) |
| 10 | 012 | 0A | 0001010 | LF | Line Feed (saut de ligne) |
| 11 | 013 | 0B | 0001011 | VT | Vertical Tab (tabulation verticale) |
| 12 | 014 | 0C | 0001100 | FF | Form Feed (saut de page) |
| 13 | 015 | 0D | 0001101 | CR | Carriage Return (retour chariot) |
| 14 | 016 | 0E | 0001110 | SO | Shift Out (fin d'extension) |
| 15 | 017 | 0F | 0001111 | SI | Shift In (démarrage d'extension) |
| 16 | 020 | 10 | 0010000 | DLE | Data Link Escape |
| 17 | 021 | 11 | 0010001 | DC1 | Device Control 1 à 4 (DC1 et DC3 sont généralement utilisés pour coder XON et XOFF dans un canal de communication duplex) |
| 18 | 022 | 12 | 0010010 | DC2 | |
| 19 | 023 | 13 | 0010011 | DC3 | |
| 20 | 024 | 14 | 0010100 | DC4 | |
| 21 | 025 | 15 | 0010101 | NAK | Negative Acknowledge (accusé de réception négatif) |
| 22 | 026 | 16 | 0010110 | SYN | Synchronous Idle |
| 23 | 027 | 17 | 0010111 | ETB | End of Transmission Block (fin du bloc de transmission) |
| 24 | 030 | 18 | 0011000 | CAN | Cancel (annulation) |
| 25 | 031 | 19 | 0011001 | EM | End of Medium (fin de support) |
| 26 | 032 | 1A | 0011010 | SUB | Substitute (substitution) |
| 27 | 033 | 1B | 0011011 | ESC | Escape (échappement) |
| 28 | 034 | 1C | 0011100 | FS | File Separator (séparateur de fichier) |
| 29 | 035 | 1D | 0011101 | GS | Group Separator (séparateur de groupe) |
| 30 | 036 | 1E | 0011110 | RS | Record Separator (séparateur d'enregistrement) |
| 31 | 037 | 1F | 0011111 | US | Unit Separator (séparateur d'unité) |
| 32 | 040 | 20 | 0100000 | SP | Espace (Space en anglais) |
| 33 | 041 | 21 | 0100001 | ! | Point d'exclamation |
| 34 | 042 | 22 | 0100010 | " | Guillemet droit |
| 35 | 043 | 23 | 0100011 | # | Croisillon et parfois Dièse |
| 36 | 044 | 24 | 0100100 | $ | Dollar (symbole) |
| 37 | 045 | 25 | 0100101 | % | Pourcent |
| 38 | 046 | 26 | 0100110 | & | Esperluette |
| 39 | 047 | 27 | 0100111 | ' | Apostrophe (guillemet fermant simple ou accent aigu)[2] |
| 40 | 050 | 28 | 0101000 | ( | Parenthèse ouvrante |
| 41 | 051 | 29 | 0101001 | ) | Parenthèse fermante |
| 42 | 052 | 2A | 0101010 | * | Astérisque |
| 43 | 053 | 2B | 0101011 | + | Plus |
| 44 | 054 | 2C | 0101100 | , | Virgule |
| 45 | 055 | 2D | 0101101 | - | Moins |
| 46 | 056 | 2E | 0101110 | . | Point |
| 47 | 057 | 2F | 0101111 | / | Barre oblique (Slash en anglais) |
| 48 | 060 | 30 | 0110000 | 0 | Le chiffre zéro |
| 49 | 061 | 31 | 0110001 | 1 | Le chiffre un |
| 50 | 062 | 32 | 0110010 | 2 | Le chiffre deux |
| 51 | 063 | 33 | 0110011 | 3 | Le chiffre trois |
| 52 | 064 | 34 | 0110100 | 4 | Le chiffre quatre |
| 53 | 065 | 35 | 0110101 | 5 | Le chiffre cinq |
| 54 | 066 | 36 | 0110110 | 6 | Le chiffre six |
| 55 | 067 | 37 | 0110111 | 7 | Le chiffre sept |
| 56 | 070 | 38 | 0111000 | 8 | Le chiffre huit |
| 57 | 071 | 39 | 0111001 | 9 | Le chiffre neuf |
| 58 | 072 | 3A | 0111010 | : | Deux-points |
| 59 | 073 | 3B | 0111011 | ; | Point-virgule |
| 60 | 074 | 3C | 0111100 | < | Inférieur |
| 61 | 075 | 3D | 0111101 | = | Égal |
| 62 | 076 | 3E | 0111110 | > | Supérieur |
| 63 | 077 | 3F | 0111111 | ? | Point d'interrogation |
| 64 | 0100 | 40 | 1000000 | @ | Arrobe |
| 65 | 0101 | 41 | 1000001 | A | |
| 66 | 0102 | 42 | 1000010 | B | |
| 67 | 0103 | 43 | 1000011 | C | |
| 68 | 0104 | 44 | 1000100 | D | |
| 69 | 0105 | 45 | 1000101 | E | |
| 70 | 0106 | 46 | 1000110 | F | |
| 71 | 0107 | 47 | 1000111 | G | |
| 72 | 0110 | 48 | 1001000 | H | |
| 73 | 0111 | 49 | 1001001 | I | |
| 74 | 0112 | 4A | 1001010 | J | |
| 75 | 0113 | 4B | 1001011 | K | |
| 76 | 0114 | 4C | 1001100 | L | |
| 77 | 0115 | 4D | 1001101 | M | |
| 78 | 0116 | 4E | 1001110 | N | |
| 79 | 0117 | 4F | 1001111 | O | |
| 80 | 0120 | 50 | 1010000 | P | |
| 81 | 0121 | 51 | 1010001 | Q | |
| 82 | 0122 | 52 | 1010010 | R | |
| 83 | 0123 | 53 | 1010011 | S | |
| 84 | 0124 | 54 | 1010100 | T | |
| 85 | 0125 | 55 | 1010101 | U | |
| 86 | 0126 | 56 | 1010110 | V | |
| 87 | 0127 | 57 | 1010111 | W | |
| 88 | 0130 | 58 | 1011000 | X | |
| 89 | 0131 | 59 | 1011001 | Y | |
| 90 | 0132 | 5A | 1011010 | Z | |
| 91 | 0133 | 5B | 1011011 | [ | Crochet ouvrant |
| 92 | 0134 | 5C | 1011100 | \ | Barre oblique inversée (backslash en anglais) ; également nommée Antislash |
| 93 | 0135 | 5D | 1011101 | ] | Crochet fermant |
| 94 | 0136 | 5E | 1011110 | ^ | Accent circonflexe |
| 95 | 0137 | 5F | 1011111 | _ | Tiret bas ou souligné (underscore en anglais) |
| 96 | 0140 | 60 | 1100000 | ` | Accent grave [3] |
| 97 | 0141 | 61 | 1100001 | a | |
| 98 | 0142 | 62 | 1100010 | b | |
| 99 | 0143 | 63 | 1100011 | c | |
| 100 | 0144 | 64 | 1100100 | d | |
| 101 | 0145 | 65 | 1100101 | e | |
| 102 | 0146 | 66 | 1100110 | f | |
| 103 | 0147 | 67 | 1100111 | g | |
| 104 | 0150 | 68 | 1101000 | h | |
| 105 | 0151 | 69 | 1101001 | i | |
| 106 | 0152 | 6A | 1101010 | j | |
| 107 | 0153 | 6B | 1101011 | k | |
| 108 | 0154 | 6C | 1101100 | l | |
| 109 | 0155 | 6D | 1101101 | m | |
| 110 | 0156 | 6E | 1101110 | n | |
| 111 | 0157 | 6F | 1101111 | o | |
| 112 | 0160 | 70 | 1110000 | p | |
| 113 | 0161 | 71 | 1110001 | q | |
| 114 | 0162 | 72 | 1110010 | r | |
| 115 | 0163 | 73 | 1110011 | s | |
| 116 | 0164 | 74 | 1110100 | t | |
| 117 | 0165 | 75 | 1110101 | u | |
| 118 | 0166 | 76 | 1110110 | v | |
| 119 | 0167 | 77 | 1110111 | w | |
| 120 | 0170 | 78 | 1111000 | x | |
| 121 | 0171 | 79 | 1111001 | y | |
| 122 | 0172 | 7A | 1111010 | z | |
| 123 | 0173 | 7B | 1111011 | { | Accolade ouvrante |
| 124 | 0174 | 7C | 1111100 | | | Barre verticale |
| 125 | 0175 | 7D | 1111101 | } | Accolade fermante |
| 126 | 0176 | 7E | 1111110 | ~ | Tilde |
| 127 | 0177 | 7F | 1111111 | DEL | Delete (effacement) |
[modifier] Caractères de contrôle
[modifier] NUL
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.
[modifier] 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[4].
[modifier] 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.
[modifier] LF, CR, fin de ligne
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 :
- sur 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) ;
- sur les machines Apple II et Mac OS jusqu'à la version 9, la fin de ligne est indiquée par un retour chariot (CR) ;
- sur 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 suivi de LF).
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 le manipuler 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.
[modifier] SUB
Il est souvent associé à la combinaison de touche Contrôle + 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.
[modifier] Voir aussi
[modifier] Notes et références
- Roman Czyborra, « ISO 8859-1 and MCS, from ISO 8859 Alphabet Soup », 1998
- 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.
- Le code 96 est également employé comme guillemet ouvrant simple en ASCII. En Unicode, il existe un code plus approprié.
- (en) ASCII character set
[modifier] Liens externes
[modifier] Articles connexes
- Art ASCII
- Fichier texte
- libcaca : librairie permettant des rendus ASCII à partir de vidéos
- Unicode
