Les ASCII de 0 à 127/Version imprimable
Une version à jour et éditable de ce livre est disponible sur Wikilivres,
une bibliothèque de livres pédagogiques, à l'URL :
https://fr.wikibooks.org/wiki/Les_ASCII_de_0_%C3%A0_127
Avant l'ASCII
Premiers codages de caractères
[modifier | modifier le wikicode]"NON" |
Les premiers codages de caractères permettaient de s'affranchir de la distance. Ils utilisaient des techniques visuelles variées, mais ne codaient pas l'information sous forme binaire.
⁃ le Code international des signaux maritimes. Il s'agit de transmission visuelle, basée sur une séquence de drapeaux.
⁃ la Tour Chappe (1794). Il s'agit de transmissions visuelles par positionnement des bras du télégraphe dans différentes postures.
⁃ l'Alphabet Morse (1838). Il a été inventé en 1832 pour la télégraphie. Il est basé sur des séquences courtes et des séquences longues. Il permet de transmettre des textes non accentués, mais n'est pas limité en longueur, rendant des extensions possibles.
⁃ Le télégraphe chinois convertissait les textes chinois avec des pages de codes en séquences de quatre chiffres décimaux, chiffres transmis en morse.
Codage par séquence de bits
[modifier | modifier le wikicode]Les premiers codages binaires de caractères furent introduits en France par le Code Baudot pour le Télex et aux États-Unis par des sociétés répondant aux appels d'offres de l'État fédéral pour le recensement puis des besoins particuliers.
Code Baudot (1874) : 32 codes (5 bits). Il permettait de transmettre des caractères non accentués et ne servait que pour le Telex.
Il permettait de transmettre les vingt-six lettres non accentuées, les dix chiffres, ainsi qu'une douzaine de symboles supplémentaires.
Vers 1901, le code Baudot original a été modifié par Donald Murray qui réorganisa les caractères, ajouta de nouveaux symboles, et introduisit la notion de jeux de caractères (modifiable?).
Codage industriel, mécanique et télécommunications
[modifier | modifier le wikicode]En 1890, on répartit les perforations arbitrairement sur la carte (recensement Hollerith 1890)[1].
En raison de l'existence de brevets le codage Hollerith de IBM n'est pas utilisé par Bull. Ce manque d'interopérabilité fragmente le marché entre « clients IBM » et « clients Bull ».
Vers le changement de siècle développement d'un codage performant sur cartes perforées pour le recensement étatique. Le produit fut ensuite commercialisé par le «Tabulating Machine Co.»[2].
⁃ La société « Western Union » en utilisa une version modifiée jusque dans les années 1950. Avait été rajouté l'espace et la sonnerie.
⁃ Dans les années 1930, le CCITT introduit le International Telegraph Alphabet No. 2 (ITA2) code comme standard international, basé sur le code Western Union modifié. Les États-Unis ont standardisé une version de l'ITA2 comme American Teletypewriter code (USTTY) qui était une base de 5-bit teletypewriter codes jusqu'aux débuts de l'ASCII 7 bits en 1963.
Informatisation
[modifier | modifier le wikicode]En 1948, Manchester Mark I, le premier ordinateur électronique, utilisait les principes du Code Baudot.
⁃ RADIX-50 (1959) : 40 codes, stocke 3 caractères dans un mot de 16 bits en big endian (PDP-11). Il permet d'utiliser les dix chiffres, l'espace, vingt-six lettres, et les trois symboles «.», «$», «%».
⁃ SIXBIT (1968 et 1954) : 64 codes (6 bits), stocke six bits caractères par mot mémoire (PDP-10)
Six-bit BCD était utilisé par IBM sur les premiers ordinateurs comme le IBM 704 en 1954[3].
Par la suite, il donne naissance à l'EBCDIC.
Les années 1960
[modifier | modifier le wikicode]En 1960, IBM, Univac, Burrough, Honeywell et d'autres se sont regroupés en consortium pour définir un standard commun .
Dans les années 1960, dans un contexte de guerre froide, apparaissent le GHOST et l'ASCII.
⁃ 1963 : naissance de l'ASCII dans le bloc des États-Unis. Prise en charge des caractères latins et anglais, sur sept bits. Dépassement de la limite précédente de six bits.
⁃ 1963 : naissance de l'EBCDIC (Extended Binary Coded Decimal Interchange Code) sur 8-bits.
⁃ 1964 : naissance du GOST (pour Государственный стандарт, norme d'État) dans le bloc soviétique GOST 10859. Prise en charge des caractères cyrilliques et anglais.
⁃ 1968 : naissance de MARC-8 permettant de coder 15 000 caractères.
En juillet 1971, le RFC 183, «The EBCDIC Codes and Their Mapping to ASCII» pose les bases de la conversion à l'ASCII, pour limiter les caractères utilisés.
Références
[modifier | modifier le wikicode]- ↑ http://www.kerleo.net/computers/mecanographie.htm
- ↑ http://tronweb.super-nova.co.jp/characcodehist.html
- ↑ (en) IBM Corporation, 704 electronic data-processing machine : manual of operation, (lire en ligne), p. 35
Les ASCII versions et standards
Les ASCII sont une succession de normes de codage de caractères sur 7 bits établies par l'organisme de normalisation américain. Ces différentes normes ASCII sont quasiment identique les unes aux autres même si de subtiles évolutions ont pu avoir eu cours au cours du temps.
Par abus de langage on qualifie parfois les 128 premiers caractères d'ASCII.
Les standards ASCII
[modifier | modifier le wikicode]Note: ne pas confondre USASI X3.4-1968 ou ANSI X3.4-1968 et ANSI X3.4:1986
Normes définissant ou ayant défini ce système de codage des caractères:
- Les 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
La désignation US-ASCII ou ASCII é-u, ASCII des États-Unis est un mix des désignations précédentes. Le registre IANA lui attribue la dénomination US-ASCII, sans en définir le codage.
Références
[modifier | modifier le wikicode]- ↑ Alphabet International de référence n°5, Union international des télécommunications, (lire en ligne)
- ↑ Alphabet International de référence : ANCIEN ALPHABET INTERNATIONAL N° 5 ou AI5, Union international des télécommunications, (lire en ligne)
La notion de caractère
En informatique, le caractère est à la fois un type de donnée et une notion abstraite. Comme en typographie, un caractère informatique peut représenter une lettre minuscule, une lettre majuscule, un chiffre ou un signe de ponctuation, mais aussi une espace typographique, une tabulation, un retour à la ligne et quelques autres opérations spéciales (sonnerie, effacement, etc.) (notion de Caractère de contrôle).
En informatique, la notion de caractère est une notion qui dans le principe associe à un graphème imprimable un numéro, de manière à dissocier la représentation physique du caractère de sa signification
Page de code
[modifier | modifier le wikicode]Une page de code est un standard informatique qui vise à donner un numéro à chaque caractère d'une langue, ou de quelques langues proches. Elle constitue donc une méthode simple de pratiquer du codage de caractères.
Le plus souvent elle associe un caractère ou symbole graphique à chacune des 256 valeurs que peut avoir un octet. L'ensemble des langues de la planète utilise des milliers de caractères ou de symboles graphiques différents, un même octet représente donc un caractère/symbole différent, selon la page de code utilisée par le système informatique. Les pages de code introduisent donc des incompatibilités entre documents de langues différentes (exemple français-russe) ou de systèmes informatiques différents (exemple DOS-Windows).
Alors que l'ASCII a été inventé en 1961, les premières pages de code ont été définies et nommées ainsi par IBM autour de l'EBCDIC en 1964[1], la même année où l'union soviétique définissait les pages de code GOST. Par la suite les nouvelles pages de code ont été définies autour de la norme ASCII, sous-ensemble commun à nombre de pages de code. Ces dernières ont eu une meilleure notoriété car elles ont été répandues avec l'essor des "ordinateurs personnels", vers les années 1980-1995.
Police de caractères
[modifier | modifier le wikicode]L'affichage d'un caractère sur un moniteur d'ordinateur ou de son impression avec une imprimante nécessite les données spécifiant le dessin exact du caractère, le glyphe. Comme en typographie, un ensemble de glyphes d'une même famille de caractères est une police de caractères.
À l'origine, l'ASCII est généralement rendu visible avec des polices à chasse fixe alignant le texte verticalement. L'arrivée d'un grand nombre de logiciels graphiques peut questionner ce concept, même si les logiciels éditeurs de textes ont tendance à conserver ce principe.
De manière plus anecdotique, l'ASCII peut être détourné pour contenir une image, c'est ce qu'on appelle l'art ASCII.
Références
[modifier | modifier le wikicode]
La table ASCII
Les caractères des différentes versions de l'ASCII font apparaître une structure particulière, dès qu'ils sont disposés en table.
Structure de la table
[modifier | modifier le wikicode]Liste
[modifier | modifier le wikicode]Lorsque l'on veut présenter non le glyphe, mais le nom des caractères, il est plutôt fait recours à une liste énumérative des dits noms.
Présentation intuitive
[modifier | modifier le wikicode]Toutefois, les caractères des différentes versions de l'ASCII sont généralement présentées dans une table de 8×16.0
Il s'agit sans doute de la manière la plus simple de présenter tout à la fois tous les caractères de la table tout en montrant qu'ils forment grossièrement quatre groupes de seize caractères:
- les caractères de contrôle
- les chiffres et symboles
- les majuscules complétées de quelques caractères
- les minuscules complétées de quelques caractères
Structure des octets
[modifier | modifier le wikicode]L'ASCII a inspiré la disposition des caractères de l'ISO 2022, à laquelle l'ASCII est conforme, par construction.
|
|||||||||||||||||||||||||||||||||
Créé sur la base du JIS X 0202:1998. |
Notation: La position dans la table de caractère est indiqué par le numéro de colonne puis par le numéro de ligne. 01/11 (E S C A P E) est une valeur hexadécimale correspondant à 1B, par exemple.
a ESCAPE est toujours un caractère de contrôle. b Avec un jeu de 94 caractères, c'est un SPACE (espace). c Avec un jeu de 94 caractères, c'est un caractère de contrôle DELETE. d dans le code 7-bit, les caractères de contrôle C1 ne s'utilisent pas réellement. Alternative représentés par des séquences d'échappement.
Descriptif
[modifier | modifier le wikicode]Table des 128 caractères ASCII
[modifier | modifier le wikicode]Énumération des 128 caractères ASCII
[modifier | modifier le wikicode]Dans la liste suivante, 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 | Space (Espace) |
33 | 041 | 21 | 0100001 | ! | Point d'exclamation |
34 | 042 | 22 | 0100010 | " | Guillemet droit |
35 | 043 | 23 | 0100011 | # | Croisillon et parfois Dièse ou (aussi dénommé signe numéro[1]) |
36 | 044 | 24 | 0100100 | $ | Dollar |
37 | 045 | 25 | 0100101 | % | Pourcent |
38 | 046 | 26 | 0100110 | & | Esperluette (aussi dénommé Perluète[1]) |
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 (aussi dénommé tiret[1] ou trait d'union) |
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 | @ | Arobase (aussi dénommé Arrobe ou A commercial[1]) |
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 (avec chasse) |
95 | 0137 | 5F | 1011111 | _ | trait bas[1]aussi dénommé [3], ou souligné (underscore en anglais) |
96 | 0140 | 60 | 1100000 | ` | Accent grave (avec chasse)[4] |
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) |
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.
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
|
Caractères de contrôle
[modifier | modifier le wikicode]On peut considérer que l'ASCII dispose entre trente-deux et trente-quatre caractères de contrôle. Voir Caractères de contrôle
NUL
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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[5].
DEL
[modifier | modifier le wikicode]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, fin de ligne
[modifier | modifier le wikicode]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.
SUB
[modifier | modifier le wikicode]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.
Références
[modifier | modifier le wikicode]- ↑ 1,0 1,1 1,2 1,3 et 1,4 Alphabet International de référence : ANCIEN ALPHABET INTERNATIONAL no 5 ou AI5, RECOMMANDATION T50, Union international des télécommunications, (lire en ligne)
- ↑ 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 anglais Latin-1's apostrophe, grave accent, acute accent.
- ↑ name=Tiret bas
- ↑ Le code 96 est également employé comme guillemet ouvrant simple en ASCII. En Unicode, il existe un code plus approprié.
- ↑ anglais ASCII character set
Caractères de contrôle
Les caractères de contrôle de l'ASCII, aussi connus sous le nom de block C0 donné par le mécanisme d'extension de l'ISO/IEC 2022. Le protocole de communication permis par le code ASCII n'est pas décrit par l'ASCII lui même mais il est décrit par la norme ANSI X3.28-1976 notamment.
Seq | Dec | Hex | Acro | Symb | Name | C | Description | ||
---|---|---|---|---|---|---|---|---|---|
^@ |
00 | 00 | NUL | ␀ | Null | \0
|
À l'origine utilisé pour permettre de laisser une absence (un gap) sur les bandes de papier pour modification ultérieure. Plus tard utilisé pour combler la suite d'un code nécessitant au terminal un temps de traitement (par exemple le temps d'un retour chariot ou d'un retour à la ligne sur un terminal imprimant). Il est maintenant souvent utilisé comme terminateur de chaîne de caractères, spécialement dans le langage de programmation C. | ||
^A |
01 | 01 | SOH | ␁ | Start of Heading | Premier caractère du header de message. | |||
^B |
02 | 02 | STX | ␂ | Start of text | Premier caractère de texte pouvant être utilisé pour terminer le header du message. | |||
^C |
03 | 03 | ETX | ␃ | End of Text | Souvent utilisé comme caractère d'arrêt (break) " pour interrompre ou terminer un programme ou un processus (par exemple sous DOS et sous Unix) | |||
^D |
04 | 04 | EOT | ␄ | End of Transmission | Utilisé sous Unix pour signaler une condition de fin de fichier (end-of-file) ou pour un logout d'un terminal. | |||
^E |
05 | 05 | ENQ | ␅ | Enquiry | Signal appelant une réponse du destinataire pour s'assurer de la continuité de sa présence. | |||
^F |
06 | 06 | ACK | ␆ | Acknowledge | Réponse au ENQ, ou une indication de succès de réception de message. | |||
^G |
07 | 07 | BEL | ␇ | Bell | \a
|
À l'origine utilisé pour faire tinter la cloche du terminal. Ensuite utilisé pour produire un court signal sonore (beep) sur des systèmes n'étant pas dotés d'un timbre physique. Par la suite, en mode silencieux, l'avertisseur peut attirer l'attention sous forme de flash en activant et désactivant l'inverse video (visual bell / cloche visuelle), le temps d'un éclair. | ||
^H |
08 | 08 | BS | ␈ | Backspace | \b
|
Déplacement du curseur d'une position vers la gauche. En entrée, cela peut détruire le caractère précédent (à gauche, le sens d'écriture étant de gauche à droite). En sortie, alors qu'avec les premières technologies, une caractère imprimé ne pouvait plus être effacé, le retour arrière (backspace) était parfois utilisé pour générer des caractères accentués en ASCII. Par exemple, à pouvait être imprimé en utilisant la séquence des trois multiplets ASCII a BS ` (0x61 0x08 0x60 ). Cet usage est maintenant désuet et généralement n'est plus pris en charge. Pour permettre une levée d'ambiguïté entre les deux usages potentiels du backspace', le code de contrôle caractère d'annulation (cancel character) a été intégré dans le jeu de contrôle C1.
| ||
^I |
09 | 09 | HT | ␉ | Character Tabulation, Horizontal Tabulation | \t
|
Positionne le caractère suivant dans une colonne de type tab stop (tabulation). | ||
^J |
10 | 0A | LF | ␊ | Line Feed | \n
|
Sur les machines à écrire, imprimantes, et certains émulateurs de terminaux déplace le curseur vers le bas d'une rangée sans modifier la position colonne. Sur Unix, utilisé pour indiquer la fin de ligne ([end-of-line). Sous MS-DOS, Windows, et des standards réseaux variables, la caractère de contrôle LF est utilisé immédiatement après CR comme partie composante de la fin de ligne. | ||
^K |
11 | 0B | VT | ␋ | Line Tabulation, Vertical Tabulation | \v
|
Positionnement sur la prochaine ligne de tabulation. | ||
^L |
12 | 0C | FF | ␌ | Form Feed | \f
|
Sur imprimante, charge la page suivante. Traité comme espace dans beaucoup de langages de programmation, peut être également utilisé pour séparer différentes divisions du code. Sur certains émulateurs de terminal, efface l'écran. | ||
^M |
13 | 0D | CR | ␍ | Carriage Return | \r
|
À l'origine utilisé pour positionner le curseur en première colonne en restant sur la même ligne. Sur Mac OS (pre-Mac OS X), ainsi que sur d'autres systèmes anciens comme l' Apple II et le Commodore 64, utilisé pour indiquer la fin de ligne. Sous MS-DOS, Windows, et des protocoles réseaux voisins, est utilisé immédiatement avant LF pour former une marque de fine de ligne. La touche [Entrée] (ou [Retour]) d'un clavier envoie cette valeur qui peut être différente suivant le logiciel impliqué. De la même manière que pour le backspace, sur un support imprimé, on peut utiliser un retour chariot pour appliquer un effet de souligné avec l'underscore sur toute une ligne. Cette pratique est obsolète et ne fonctionne pas sur un écran télétype car l'underscore remplacerait complètement le texte. | ||
^N |
14 | 0E | SO | ␎ | Shift Out | Change pour un jeu de caractère alternatif. | |||
^O |
15 | 0F | SI | ␏ | Shift In | Retour au jeu de caractère régulier après avoir utilisé un jeu de caractères alternatifs. | |||
^P |
16 | 10 | DLE | ␐ | Data Link Escape | Conduit à l'interprétation des prochains octets comme données binaires plutôt que des caractères de contrôle ou graphiques. Le retour à une utilisation normale est alors dépendant de l'implémentation. | |||
^Q |
17 | 11 | DC1 | ␑ | Device Control One (XON) | Ces quatre codes de contrôles sont réserves pour le contrôle des périphériques (device), leur interprétation est dépendante du périphérique connecté. DC1 et DC2 portaient l'intention primaire d'indiquer l'activation d'un périphérique alors que DC3 et DC4 indiquaient la pause ou l'arrêt. La pratique actuelle a fait de DC1 et DC3 (aussi connus comme XON et XOFF respectivement et dans cette utilisation) la standard de fait pour le flow contrôle logiciel. | |||
^R |
18 | 12 | DC2 | ␒ | Device Control Two | ||||
^S |
19 | 13 | DC3 | ␓ | Device Control Three (XOFF) | ||||
^T |
20 | 14 | DC4 | ␔ | Device Control Four | ||||
^U |
21 | 15 | NAK | ␕ | Negative Acknowledge | Envoyé par une station comme réponse négative. Dans les protocoles de communication binaires et synchrones, le NAK est utilisé pour indiquer la détection d'une erreur dans le bloc de données précédemment reçu et ainsi accepter la retransmission du dit bloc. Dans les systèmes multipoint, le NAK est utilisé comme réponse not-ready à un poll. | |||
^V |
22 | 16 | SYN | ␖ | Synchronous Idle | Utilisé dans les systèmes à transmission synchrone pour fournir un signal à partir duquel la correction synchrone peut être établie entre le data terminal equipment, en particulier lorsque aucun autre caractère n'est transmis. | |||
^W |
23 | 17 | ETB | ␗ | End of Transmission Block | Indique la fin de la transmission du bloc de données lorsque les données sont divisées en blocs à des fins de transmission. | |||
^X |
24 | 18 | CAN | ␘ | Cancel | Indique une erreur ou une annulation dans les données précédentes . | |||
^Y |
25 | 19 | EM | ␙ | End of medium | Sur bandes papier ou magnétiques moyen d'indiquer que la fin de la partie utilisable de la bande a été atteinte. | |||
^Z |
26 | 1A | SUB | ␚ | Substitute | Originally intended for use as a transmission control character to indicate that garbled or invalid characters had been received. It has often been put to use for other purposes when the in-band signaling of errors it provides is unneeded, especially where robust methods of error detection and correction are used, or where errors are expected to be rare enough to make using the character for other purposes advisable. | |||
^[ |
27 | 1B | ESC | ␛ | Escape |
Dans sa conception d'origine, ce caractère permet d'introduire une séquence spéciale non normalisée par l'ASCII. Les caractères suivants ne sont donc plus de l'ASCII pur. Sur la plupart des systèmes, une touche d'échappement a été introduite pour produire ce caractère. | |||
^\ |
28 | 1C | FS | ␜ | File Separator | Peut être utilisé comme délimiteurs pour séparer les champs d'une structure de données. Si utilisé pour marquer des niveaux hiérarchiques, le caractère US est le niveau le plus bas (dividing plain-text data items), alors que RS, GS, et FS sont d'un niveau augmentant pour des subdivisions . | |||
^] |
29 | 1D | GS | ␝ | Group separator | ||||
^^ |
30 | 1E | RS | ␞ | Record Separator | ||||
^_ |
31 | 1F | US | ␟ | Unit separator | ||||
Bien que ne faisant pas techniquement partie de la plage des caractères du bloc C0, les deux caractères suivants partagent des caractéristiques des caractères de contrôle. Ils sont définis par l'ISO/IEC 2022 comme étant toujours disponibles quel que soit le jeu de caractères graphiques utilisés.
Ces deux caractères ont la particularité d'avoir tous les bits graphiques identiques, soit à zéro, soit à un. | |||||||||
32 | 20 | SP | ␠ | Space | L'espace est un caractère graphique du point de vue de l'ASCII. Il dispose d'une représentation graphique consistant en l'absence de symbole graphique. Il cause l'avancement d'un caractère de la position active. Dans certaines applications, l'espace est le séparateur de mot de plus bas niveau. | ||||
^? |
127 | 7F | DEL | ␡ | Delete | À l'origine conçu pour indiquer les caractères effacés sur des bandes de papier, puisque chaque caractère peut être transformé : la perforation de chacun des bits permet de les mettre tous à un. Sur les terminaux compatible VT100, ce caractère est généré par la touche étiquetée "⌫", également appelée backspace sur les claviers anglais modernes, et ne correspond pas à la touche delete des PC anglais. |
Caractères graphiques
Alors que la plupart des présentations de l'ASCII se limitent à la table que nous avons vu dans un chapitre précédent[1]. Il nous a semblé juste d'en dire plus sur certains caractères, leurs origines, leur organisation, leurs intentions et leurs standardisation, notamment par rapport à l'ISO-646.
Les caractères ASCII affichables sont entre 94 et 95 suivant que l'espace soit compté, avec notamment:
⁃ 26 lettres minuscules
⁃ 26 lettres majuscules
⁃ 10 chiffres
⁃ 32 symboles
⁃ une espace sans représentation affichable ou affiché sans représentation.
L'héritage de l'alphabet n°2
[modifier | modifier le wikicode]Il est difficile de ne pas voir qu'une grande partie des caractères graphiques est héritée de l'alphabet n°2. Ceci est vrai pour chacune des vingt-six lettres et de leur correspondance chiffrée c'est-à-dire chacun des dix chiffres, mais aussi pour une partie des symboles invariants de l'ISO-646.
Parmi les symboles hérités, nous pouvons voir:
$ ! & # ' ( ) " / : ; ? , . espace
Ces quinze symboles se retrouvent avec les dix chiffres dans le bloc 0x20-0x3f. La cloche (bell) n'étant pas un caractère graphique n'a pas été reprise dans ce bloc.
Il reprend aussi des symboles de la variante British Post Office du code Baudot, notamment:
= % £ / +
Apport et inventions de l'ISO-646 et de l'ASCII
[modifier | modifier le wikicode]En plus des caractères hérités de Baudit, les caractères invariants de l'ISO-646 apporte les caractères suivants:
< > _
À ces caractères invariants de l'ISO-646, le code Baudot apporte les caractères suivants:
@ [ \ ] ^ ` { | } ~
Si l'origine de ces caractères peut sembler mystérieuse, on peut néanmoins noter quelques propriétés:
^ ` ~
étaient conçu pour pouvoir servir d'accent, tout comme
' " ,
Les caractères ^ et _ pouvaient servir de flèches.
Les caractères [ ] { } ont sans doute été introduits pour limiter de blocs? Ce qui est sur est que leur standardisation a été introduite par le langage C.
Mais qui seraient dire pourquoi ont été ajoutés les caractères @ | et antislash?
Caractères invariants
[modifier | modifier le wikicode]Les positions invariantes des jeux de caractères graphiques latins compatibles avec l’ISO 646 sont les suivantes :
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Codes de caractères variants
[modifier | modifier le wikicode]Les caractères affichés sur fond bleu ou jaune dans le tableau ci-dessous sont ceux recommandés, mais la variante ASCII (affichée sur fond blanc dans la même ligne, notamment dans la colonne US) est souvent utilisée à la place (quand ils sont utilisés isolément). C’est le cas particulièrement pour les caractères dits invariants de l’ISO 646, c’est-à-dire les 26 lettres latines basiques (majuscules ou minuscules), les 10 chiffres arabo-européens et les 20 symboles ou ponctuations suivants:
! " % & ' ( ) * + , - . / : ; < = > ? _
qui ne sont pas modifiés dans les jeux de caractères totalement compatibles avec l’ISO 646 (mais peuvent avoir des variantes graphiques plus proches d’autres caractères considérés comme distincts dans ISO/IEC 10646 et Unicode). Ces caractères sont disposés de la même manière que sur les machines à écrire Remington.
Aussi, parmi les 94 positions graphiques de l’ISO 646 (codées de 33 à 126 en décimal), seules 12 positions sont dites variantes et correspondent aux caractères graphiques suivants de la variante américaine de l’ISO 646 (alias ASCII) :
# $ @ [ \ ] ^ ` { | } ~
Les changements spécifiques à certaines de ces variantes sont indiqués dans la table suivante avec un fond coloré jaune ou bleu quand le caractère assigné au code est différent de celui assigné dans l’ASCII (US) ; les cellules vides sur fond gris indiquent des positions invalides non utilisées dans le jeu de caractères normalisé correspondant :
Codes | Caractères pour chaque jeu compatible ISO 646 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
binaire | déc. | hexa | INV | T.61 | JA-O | JA | KR | CN | US | IRV | GB | FR | FR-0 | CA-1 | CA-2 | ita | por | PT | DK | NO | NO-2 | SE | SE-C | DE | HU | IE | esp | ES | CU | MT | YU |
010 0010 | 34 | 22 | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " |
010 0011 | 35 | 23 | # | # | # | # | # | # | # | £ | £ | £ | # | # | £ | # | £ | # | # | § | # | # | # | # | £ | # | # | # | # | # | |
010 0100 | 36 | 24 | ¤ | $ | $ | $ | ¥ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | ¤ | ¤ | $ | ¤ | $ | $ | $ | ¤ | $ | $ | |
010 1001 | 39 | 27 | ' | ' | ' | ' | ' | ' | ' | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ |
010 1100 | 44 | 2C | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , |
010 1101 | 45 | 2D | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
010 1111 | 47 | 2F | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / |
100 0000 | 64 | 40 | @ | @ | @ | @ | @ | @ | @ | @ | à | à | à | à | § | § | ´ | @ | @ | @ | @ | É | § | Á | Ó | § | • | @ | @ | Ž | |
101 1011 | 91 | 5B | [ | [ | [ | [ | [ | [ | [ | [ | ° | ° | â | â | ° | Ã | Ã | Æ | Æ | Æ | Ä | Ä | Ä | É | É | ¡ | ¡ | ¡ | g | Š | |
101 1100 | 92 | 5C | ¥ | ¥ | ₩ | \ | \ | \ | \ | ç | ç | ç | ç | ç | Ç | Ç | Ø | Ø | Ø | Ö | Ö | Ö | Ö | Í | Ñ | Ñ | Ñ | z | Ð | ||
101 1101 | 93 | 5D | ] | ] | ] | ] | ] | ] | ] | ] | § | § | ê | ê | é | Õ | Õ | Å | Å | Å | Å | Å | Ü | Ü | Ú | ¿ | Ç | ] | h | C | |
101 1110 | 94 | 5E | ^ | ^ | ^ | ^ | ^ | ˆ | ˆ | ^ | ˆ | î | É | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | Ü | ˆ | ˆ | Á | ˆ | ¿ | ¿ | ˆ | C | ||
101 1111 | 95 | 5F | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ |
110 0000 | 96 | 60 | ` | ` | ` | ` | ` | ` | µ | µ | ô | ô | ù | ` | ` | ` | ` | ` | ` | é | ` | á | ó | ` | ` | ` | c | ž | |||
111 1011 | 123 | 7B | { | { | { | { | { | { | { | é | é | é | é | à | ã | ã | æ | æ | æ | ä | ä | ä | é | é | ° | ´ | ´ | G | š | ||
111 1100 | 124 | 7C | | | | | | | | | | | | | | | | | ù | ù | ù | ù | ò | ç | ç | ø | ø | ø | ö | ö | ö | ö | í | ñ | ñ | ñ | Z | d | |
111 1101 | 125 | 7D | } | } | } | } | } | } | } | è | è | è | è | è | õ | õ | å | å | å | å | å | ü | ü | ú | ç | ç | [ | H | c | ||
111 1110 | 126 | 7E | ¯ | ¯ | ~ | ~ | ˜ | ˜ | ¨ | ¨ | û | û | ì | ° | ˜ | ˜ | ¯ | | | ˜ | ü | ß | ˝ | á | ˜ | ¨ | ¨ | C | c |
Les caractères affichés ci-dessus sur fond jaune doivent être interprétés comme des diacritiques combinants lorsqu’ils sont précédés ou suivis d’un caractère de contrôle retour arrière (BS, code 8). Ces diacritiques s’appliquent alors au caractère précédent si ces caractères réinterprétés sont précédés du contrôle retour arrière, sinon ils s’appliquent au caractère suivant comme s’ils étaient saisis comme touches mortes (et dans ce cas le transcodage vers Unicode nécessitera une inversion du caractère suivant et du diacritique) ; on peut aussi coder la combinaison du caractère de base et du diacritique avec un caractère Unicode précombiné (en forme normale C) correspondant à cette combinaison, si elle est codée dans Unicode. Dans ce cas, les ponctuations, symboles et lettres modificatives suivants sont réinterprétés ainsi :
ISO 646 | Interprétation isolée | Interprétation avec BS et un autre caractère (ici « o ») | ||||
---|---|---|---|---|---|---|
hexa | Caractère | Unicode | Nom | Caractère | Unicode | Nom |
0x22 | "
|
U+0022 | guillemet anglais | ö
|
U+0308 | diacritique tréma (ou diérèse ou umlaut) |
0x27 | ´
|
U+00B4 | accent aigu | ó
|
U+0301 | diacritique accent aigu (ou oxeia en grec) |
0x2C | ,
|
U+002C | virgule | o̦
|
U+0326 | diacritique virgule souscrite (en roumain) |
o̧
|
U+0327 | diacritique cédille (sauf en en roumain) | ||||
0x2D | -
|
U+002D | tiret-moins | o̵
|
U+0335 | diacritique barre courte couvrante |
0x2F | /
|
U+002F | barre oblique | o̷
|
U+0337 | diacritique barre oblique courte couvrante (avec une minuscule) |
o̸
|
U+0338 | diacritique barre oblique longue couvrante (avec une majuscule) | ||||
0x5B | °
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef |
0x5E | ^
|
U+02C6 | lettre modificative accent circonflexe (avec chasse) | ô
|
U+0302 | diacritique accent circonflexe |
0x5F | _
|
U+005F | tiret bas | o̱
|
U+0331 | diacritique macron souscrit |
0x60 | `
|
U+0060 | accent grave (avec chasse) | ò
|
U+0300 | diacritique accent grave |
0x7B | °
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef |
´
|
U+00B4 | accent aigu | ó
|
U+0301 | diacritique accent aigu (ou oxeia en grec) | |
0x7E | ¨
|
U+00A8 | tréma (avec chasse) | ö
|
U+0308 | diacritique tréma (ou diérèse ou umlaut) |
°
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef | |
ˉ
|
U+02C9 | lettre modificative macron (avec chasse) | ō
|
U+0304 | diacritique macron | |
˜
|
U+02DC | petit tilde (avec chasse) | õ
|
U+0303 | diacritique tilde | |
˝
|
U+02DD | double accent aigu (avec chasse) | ő
|
U+030B | diacritique double accent aigu |
Alphabet
[modifier | modifier le wikicode]Les caractères alphabétiques sont dotés d'un jeu majuscule et d'un jeu minuscule, alignés sur 32, de telle manière qu'il suffit de changer un seul bit pour passer d'une casse à l'autre. Les caractère situés entre chaque jeu sont similaires de sorte que si on devait également changer leur bit de casse, l'aspect du texte reste globalement le même quelle que soit la casse.
Pour faciliter le tri, les caractères sont disposés dans l'ordre alphabétique et l'espace ainsi que les signes de ponctuation sont situés en amont, et l'espace est situé avant tous les autres caractères. De la sorte si il fallait trier ces lignes de texte dans l'ordre « ASCIIbétique »
JOHNSON JOHN,S JOHN
l'ordre de tri par défaut est
JOHN JOHN,S JOHNSON
ce qui est généralement l'ordre voulu.
À l'origine l'assignation de caractères était soumis à des soucis de collation, surtout dans les versions internationales, mais cela a été abandonné assez rapidement. C'est pour cette raison notamment que l'arobase est situé juste avant le A car il était prévu qu'en France le caractère À soit présent à cette place.
Notes de bas de page
[modifier | modifier le wikicode]
Limitations techniques
Les principales limitations techniques de l'ASCII sont les suivantes:
⁃ S'il peut servir à écrire des programmes informatiques et des fichiers de configuration, du latin ou de l'anglais, il est totalement insuffisant pour la totalité des autres langues.
Caractères manquants
[modifier | modifier le wikicode]Certains caractères sont absents du jeu ASCII.
⁃ L'ASCII ne permet pas les caractères accentués, comme é, è, ç, à, œ.
⁃ L'ASCII ne permet pas les symboles mathématiques comme ¬; ≈; ≠; +; ±;
⁃ L'ASCII ne permet pas les symboles de ponctuation, comme » « —
Flou de caractères
[modifier | modifier le wikicode]Certains caractères sont flous dans leur définition ou bien dans leur graphie.
⁃ Par exemple la quote est parfois droite (sur les PC), parfois incurvée comme une apostrophe (sur les SUN). Il est toutefois utilisé dans les deux usages de délimitation de chaîne et d'apostrophe.
⁃ L'ASCII ne permet pas les symboles de ponctuation, comme » « —
⁃ La standardisation des retours à la ligne est limitée: suivant les systèmes elle se fait soit par CR, soit par LF, soit par une combinaison spécifique des deux.
Limitation des évolutions
[modifier | modifier le wikicode]L'ASCII n'offre pas de possibilité d'extension universelle et standardisée. L'extension par séquence d'échappement n'est pas universellement reconnue. L'extension par «byte order mark» n'est pas non plus universellement reconnue.
Les variantes de l'ISO 646
L'ISO/CEI 646 (ICS n°35.040) est une norme ISO qui depuis 1972 spécifie des codes de caractères graphiques codés sur 7 bits à partir desquels plusieurs normes nationales sont dérivées. La plus connue d'entre elles est la variante américaine, communément (mais improprement) désignée « ASCII ». L'ISO 646 est également désigné comme l'« Alphabet international de référence n°5 » (AIR5), « Alphabet international n°5 » (AI5) ou encore (en anglais) « International Alphabet No. 5 » (IA5).
Il est similaire, si ce n'est très proche ou identique au standard ECMA-6[1].
Généralités
[modifier | modifier le wikicode]Puisque la portion d’ISO/CEI 646 partagée par tous les pays n’est constituée que des lettres de l’alphabet latin de base suffisant pour l’anglais moderne, les autres langues utilisant un alphabet latin plus étendu ont eu besoin de créer des extensions et des variantes nationales de l’ISO 646 dans le but d'utiliser les lettres spécifiques à leurs langues.
À l’époque, la reconnaissance universelle d’un octet de 8 bit n’existait pas ; aussi, les jeux de caractères nationaux créent à travers cette contrainte de 128 caractères (27 = 128) ne purent pas toujours inclure tous les caractères ASCII qui n’apparaissaient pas dans les variantes nationales.
L’ISO 646 normalise donc les variantes nationales autorisées pour les jeux européens à caractères latins, permettant de créer un jeu de 94 caractères graphiques (numérotés de 33 à 126) comprenant 80 caractères invariants entre toutes les versions nationales, et 12 positions utilisables pour les caractères (alphabétiques ou non) nécessaires à une langue ou un groupe de langues. Il fixe également un alphabet international de référence (IRV) servant de guide (non impératif) pour le placement des 1 à 12 caractères sélectionnés sur les 12 positions variantes.
Les jeux ISO 646 incomplets sont autorisés (toutefois la plupart des jeux approuvés et inscrits dans le registre ISO-IR complètent les positions libres par les caractères du jeu de référence (similaire au jeu retenu pour la norme américaine, mais restreint aux seules 94 positions graphiques de la plage de code G0 définie par la norme de codage ISO 2022 avec laquelle la norme ISO 646 est totalement compatible).
Plus tard, lorsque les jeux de caractères composés de 8 bits devinrent plus fréquents, la norme ISO 8859 fut alors préférée à ces variantes nationales du jeu latin codé sur 7 bits, en imposant le choix de la variante 'ISO 646/IRV (c’est-à-dire le jeu graphique à 94 éléments enregistré sous le numéro ISO-IR/002) improprement appelée ASCII (qui désigne en fait le jeu de caractères latins américains codé sur 7 bits, complété du jeu de caractères de contrôles ISO 646/C0 (ISO-IR/001) pour les 32 premières positions). Toutefois, le développement de jeux de caractères plus étendu (sur 8 bits, et parfois avec des plans de codes multiples pour chaque bloc de 32, 94 ou 96 codes) s’est fondé sur la norme ISO 2022 permettant de les rendre compatibles avec un codage sur 7 bits, grâce à un système de séquences d’échappement et certains caractères de contrôle normalisés.
Les normes ISO 646 et ISO 8859 sont en principe figées depuis juin 2004 (la normalisation internationale de nouveaux jeux à 7 et 8 bits est désormais arrêtée, le groupe de travail de l’ISO ayant suspendu ses activités) et sont destinées à être remplacées par la nouvelle norme plus complète et plus précise ISO/CEI 10646 (liée à Unicode) dont l’interprétation et l’interopérabilité sont bien meilleures, cette dernière norme permettant de représenter tous les autres jeux de caractères normalisés existants et d’affiner le codage effectif final tout en préservant la sémantique du texte codé et en améliorant sa typographie. L’ISO/CEI 10646 a gardé la compatibilité ascendante avec la vieillissante norme ISO 646.
Caractères invariants
[modifier | modifier le wikicode]Les positions invariantes des jeux de caractères graphiques latins compatibles avec l’ISO 646 sont les suivantes :
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
010 0000 | 32 | 20 | espace | |
010 0001 | 33 | 21 | ! | point d’exclamation |
010 0010 | 34 | 22 | " | guillemet anglais |
010 0101 | 37 | 25 | % | signe pourcent |
010 0110 | 38 | 26 | & | esperluette |
010 0111 | 39 | 27 | ' | apostrophe |
010 1000 | 40 | 28 | ( | parenthèse ouvrante |
010 1001 | 41 | 29 | ) | parenthèse fermante |
010 1010 | 42 | 2A | * | astérisque |
010 1011 | 43 | 2B | + | signe plus |
010 1100 | 44 | 2C | , | virgule |
010 1101 | 45 | 2D | - | trait d’union-signe moins |
010 1110 | 46 | 2E | . | point |
010 1111 | 47 | 2F | / | barre oblique |
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
011 0000 | 48 | 30 | 0 | chiffre zéro |
011 0001 | 49 | 31 | 1 | chiffre un |
011 0010 | 50 | 32 | 2 | chiffre deux |
011 0011 | 51 | 33 | 3 | chiffre trois |
011 0100 | 52 | 34 | 4 | chiffre quatre |
011 0101 | 53 | 35 | 5 | chiffre cinq |
011 0110 | 54 | 36 | 6 | chiffre six |
011 0111 | 55 | 37 | 7 | chiffre sept |
011 1000 | 56 | 38 | 8 | chiffre huit |
011 1001 | 57 | 39 | 9 | chiffre neuf |
011 1010 | 58 | 3A | : | deux-points |
011 1011 | 59 | 3B | ; | point-virgule |
011 1100 | 60 | 3C | < | signe inférieur à |
011 1101 | 61 | 3D | = | signe égal à |
011 1110 | 62 | 3E | > | signe supérieur à |
011 1111 | 63 | 3F | ? | point d’interrogation |
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
100 0001 | 65 | 41 | A | A latine capitale A |
100 0010 | 66 | 42 | B | lettre latine capitale B |
100 0011 | 67 | 43 | C | lettre latine capitale C |
100 0100 | 68 | 44 | D | lettre latine capitale D |
100 0101 | 69 | 45 | E | lettre latine capitale E |
100 0110 | 70 | 46 | F | lettre latine capitale F |
100 0111 | 71 | 47 | G | lettre latine capitale G |
100 1000 | 72 | 48 | H | lettre latine capitale H |
100 1001 | 73 | 49 | I | lettre latine capitale I |
100 1010 | 74 | 4A | J | lettre latine capitale J |
100 1011 | 75 | 4B | K | lettre latine capitale K |
100 1100 | 76 | 4C | L | lettre latine capitale L |
100 1101 | 77 | 4D | M | lettre latine capitale M |
100 1110 | 78 | 4E | N | lettre latine capitale N |
100 1111 | 79 | 4F | O | lettre latine capitale O |
101 0000 | 80 | 50 | P | lettre latine capitale P |
101 0001 | 81 | 51 | Q | lettre latine capitale Q |
101 0010 | 82 | 52 | R | lettre latine capitale R |
101 0011 | 83 | 53 | S | lettre latine capitale S |
101 0100 | 84 | 54 | T | lettre latine capitale T |
101 0101 | 85 | 55 | U | lettre latine capitale U |
101 0110 | 86 | 56 | V | lettre latine capitale V |
101 0111 | 87 | 57 | W | lettre latine capitale W |
101 1000 | 88 | 58 | X | lettre latine capitale X |
101 1001 | 89 | 59 | Y | lettre latine capitale Y |
101 1010 | 90 | 5A | Z | lettre latine capitale Z |
101 1111 | 95 | 5F | _ | tiret bas |
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
110 0001 | 97 | 61 | a | lettre latine minuscule a |
110 0010 | 98 | 62 | b | lettre latine minuscule b |
110 0011 | 99 | 63 | c | lettre latine minuscule c |
110 0100 | 100 | 64 | d | lettre latine minuscule d |
110 0101 | 101 | 65 | e | lettre latine minuscule e |
110 0110 | 102 | 66 | f | lettre latine minuscule f |
110 0111 | 103 | 67 | g | lettre latine minuscule g |
110 1000 | 104 | 68 | h | lettre latine minuscule h |
110 1001 | 105 | 69 | i | lettre latine minuscule i |
110 1010 | 106 | 6A | j | lettre latine minuscule j |
110 1011 | 107 | 6B | k | lettre latine minuscule k |
110 1100 | 108 | 6C | l | lettre latine minuscule l |
110 1101 | 109 | 6D | m | lettre latine minuscule m |
110 1110 | 110 | 6E | n | lettre latine minuscule n |
110 1111 | 111 | 6F | o | lettre latine minuscule o |
111 0000 | 112 | 70 | p | lettre latine minuscule p |
111 0001 | 113 | 71 | q | lettre latine minuscule q |
111 0010 | 114 | 72 | r | lettre latine minuscule r |
111 0011 | 115 | 73 | s | lettre latine minuscule s |
111 0100 | 116 | 74 | t | lettre latine minuscule t |
111 0101 | 117 | 75 | u | lettre latine minuscule u |
111 0110 | 118 | 76 | v | lettre latine minuscule v |
111 0111 | 119 | 77 | w | lettre latine minuscule w |
111 1000 | 120 | 78 | x | lettre latine minuscule x |
111 1001 | 121 | 79 | y | lettre latine minuscule y |
111 1010 | 122 | 7A | z | lettre latine minuscule z |
Variantes nationales de l’ISO 646
[modifier | modifier le wikicode]De nombreuses variantes de l’ISO 646 ont été normalisées par des organismes nationaux officiels, et la plupart ont alors été déclarées dans le registre international (ISO-IR) des jeux de caractères à 7 et 8 bits. Cependant ce registre est maintenant clos depuis juin 2004, ses membres ayant décidé de concentrer leurs efforts au maintien de la norme universelle ISO/CEI 10646.
D’autres variantes ont été développées de façon initialement propriétaire pour couvrir les besoins de certaines langues, avant d’être enregistrées publiquement avec l’appui d’organismes de normalisation officiels (notamment l’ECMA au plan européen, afin de stabiliser les tables de conversions). Il existe cependant de nombreuses variantes propriétaires n’ayant pas reçu cet appui et qui donc n'ont pas été enregistrées formellement par l’ISO-IR (et dans l’immédiat, ne le seront sans doute jamais, leur obsolescence étant très accélérée du fait de l’imprécision de leur définition et de l’obsolescence parallèle des systèmes qui les supportaient).
Parmi les normes nationales enregistrées pour les variantes de l’ISO/CEI 646 on trouve :
Code | ISO- IR |
Norme | Utilisation |
---|---|---|---|
CA-1 | 121 | CSA Z243.4-1985 | Canada (alternative no.1, avec “î”) (français classique) |
CA-2 | 122 | CSA Z243.4-1985 | Canada (alternative no.2, avec “É”) (français orthographe réformée) |
CN | 057 | GB/T 1988-80 | Chine (latin basique) |
CU | 151 | NC 99-10:81 | Cuba (espagnol) |
DE | 021 | DIN 66083 | Allemagne (allemand) |
DK | — | DS 2089 | Danemark (danois) |
FR | 069 | AFNOR NF Z 62010-1982 | France (français) |
FR-0 | 025 | AFNOR NF Z 62010-1973 | France (obsolète depuis avril 1985) |
GB | 004 | BSI 4730 | Royaume-Uni (anglais) |
GR | 088 | HOS ELOT | Grèce (obsolète) |
HU | 086 | MSZ 7795/3 | Hongrie |
IE | 207 | NSAI 433:1996 | Irlande (gaélique irlandais) |
Code | ISO- IR |
Norme | Utilisation |
---|---|---|---|
INV | 170 | ISO 646:1983 | International (jeu graphique invariant) |
IRV | 002 | ISO 646:1983 | International (jeu graphique de référence) |
JA | 014 | JIS C 6220-1969 | Japon (romaji) |
JA-O | 092 | JIS C 6229-1984 | Japon (OCR-B) |
KR | — | KS C 5636-1989 | Corée du Sud (coréen romanisé) |
MT | — | Malte (maltais) | |
NO | 060 | NS 4551 version 1 | Norvège |
NO-2 | 061 | NS 4551 version 2 | Norvège (obsolète depuis juin 1987) |
SE | 010 | SEN 85 02 00 annexe B | Suède (suédois de base) |
SE-C | 011 | SEN 85 02 00 annexe C | Suède (suédois étendu pour les noms) |
T.61 | 102 | ITU/CCITT Recommandation T.61 | International (Teletex) |
US | 006 | ANSI X3.4-1968 | États-Unis (ASCII) |
YU | 141 | JUS I.B1.002 | ex-Fédération de Yougoslave (croate, slovène, serbe latin) |
Parmi les normes initialement propriétaires finalement approuvées au plan international pour l’interopérabilité grâce au support d'un organisme de normalisation, on trouve :
Code | ISO- IR |
Normalisation | Origine | Utilisation |
---|---|---|---|---|
ES | 085 | ECMA | IBM | Espagne (basque, castillan, catalan, galicien) |
esp | 017 | ECMA | Olivetti | Espagnol (international) |
DK-SE | 009-1 | SSK | NATS, jeu principal | Suède et Danemark (texte journalistique) |
FI-SE | 008-1 | SSK | NATS, jeu principal | Suède et Finlande (texte journalistique) |
Dans les tables ci-dessus, la colonne code indique la correspondance avec ceux utilisés comme libellés abrégés de colonnes pour repérer les caractères variants de la section suivante ; ces codes ne sont pas normalisés (seuls les numéros d’enregistrement ISO-IR le sont).
Codes de caractères variants
[modifier | modifier le wikicode]Les caractères affichés sur fond bleu ou jaune dans le tableau ci-dessous sont ceux recommandés, mais la variante ASCII (affichée sur fond blanc dans la même ligne, notamment dans la colonne US) est souvent utilisée à la place (quand ils sont utilisés isolément). C’est le cas particulièrement pour les caractères dits invariants de l’ISO 646, c’est-à-dire les 26 lettres latines basiques (majuscules ou minuscules), les 10 chiffres arabo-européens et les 20 symboles ou ponctuations suivants:
! " % & ' ( ) * + , - . / : ; < = > ? _
qui ne sont pas modifiés dans les jeux de caractères totalement compatibles avec l’ISO 646 (mais peuvent avoir des variantes graphiques plus proches d’autres caractères considérés comme distincts dans ISO/IEC 10646 et Unicode).
Aussi, parmi les 94 positions graphiques de l’ISO 646 (codées de 33 à 126 en décimal), seules 12 positions sont dites variantes et correspondent aux caractères graphiques suivants de la variante américaine de l’ISO 646 (alias ASCII) :
# $ @ [ \ ] ^ ` { | } ~
Les changements spécifiques à certaines de ces variantes sont indiqués dans la table suivante avec un fond coloré jaune ou bleu quand le caractère assigné au code est différent de celui assigné dans l’ASCII (US) ; les cellules vides sur fond gris indiquent des positions invalides non utilisées dans le jeu de caractères normalisé correspondant :
Codes | Caractères pour chaque jeu compatible ISO 646 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
binaire | déc. | hexa | INV | T.61 | JA-O | JA | KR | CN | US | IRV | GB | FR | FR-0 | CA-1 | CA-2 | ita | por | PT | DK | NO | NO-2 | SE | SE-C | DE | HU | IE | esp | ES | CU | MT | YU |
010 0010 | 34 | 22 | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " |
010 0011 | 35 | 23 | # | # | # | # | # | # | # | £ | £ | £ | # | # | £ | # | £ | # | # | § | # | # | # | # | £ | # | # | # | # | # | |
010 0100 | 36 | 24 | ¤ | $ | $ | $ | ¥ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | ¤ | ¤ | $ | ¤ | $ | $ | $ | ¤ | $ | $ | |
010 1001 | 39 | 27 | ' | ' | ' | ' | ' | ' | ' | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ |
010 1100 | 44 | 2C | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , |
010 1101 | 45 | 2D | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
010 1111 | 47 | 2F | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / |
100 0000 | 64 | 40 | @ | @ | @ | @ | @ | @ | @ | @ | à | à | à | à | § | § | ´ | @ | @ | @ | @ | É | § | Á | Ó | § | • | @ | @ | Ž | |
101 1011 | 91 | 5B | [ | [ | [ | [ | [ | [ | [ | [ | ° | ° | â | â | ° | Ã | Ã | Æ | Æ | Æ | Ä | Ä | Ä | É | É | ¡ | ¡ | ¡ | g | Š | |
101 1100 | 92 | 5C | ¥ | ¥ | ₩ | \ | \ | \ | \ | ç | ç | ç | ç | ç | Ç | Ç | Ø | Ø | Ø | Ö | Ö | Ö | Ö | Í | Ñ | Ñ | Ñ | z | Ð | ||
101 1101 | 93 | 5D | ] | ] | ] | ] | ] | ] | ] | ] | § | § | ê | ê | é | Õ | Õ | Å | Å | Å | Å | Å | Ü | Ü | Ú | ¿ | Ç | ] | h | C | |
101 1110 | 94 | 5E | ^ | ^ | ^ | ^ | ^ | ˆ | ˆ | ^ | ˆ | î | É | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | Ü | ˆ | ˆ | Á | ˆ | ¿ | ¿ | ˆ | C | ||
101 1111 | 95 | 5F | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ |
110 0000 | 96 | 60 | ` | ` | ` | ` | ` | ` | µ | µ | ô | ô | ù | ` | ` | ` | ` | ` | ` | é | ` | á | ó | ` | ` | ` | c | ž | |||
111 1011 | 123 | 7B | { | { | { | { | { | { | { | é | é | é | é | à | ã | ã | æ | æ | æ | ä | ä | ä | é | é | ° | ´ | ´ | G | š | ||
111 1100 | 124 | 7C | | | | | | | | | | | | | | | | | ù | ù | ù | ù | ò | ç | ç | ø | ø | ø | ö | ö | ö | ö | í | ñ | ñ | ñ | Z | d | |
111 1101 | 125 | 7D | } | } | } | } | } | } | } | è | è | è | è | è | õ | õ | å | å | å | å | å | ü | ü | ú | ç | ç | [ | H | c | ||
111 1110 | 126 | 7E | ¯ | ¯ | ~ | ~ | ˜ | ˜ | ¨ | ¨ | û | û | ì | ° | ˜ | ˜ | ¯ | | | ˜ | ü | ß | ˝ | á | ˜ | ¨ | ¨ | C | c |
Les caractères affichés ci-dessus sur fond jaune doivent être interprétés comme des diacritiques combinants lorsqu’ils sont précédés ou suivis d’un caractère de contrôle retour arrière (BS, code 8). Ces diacritiques s’appliquent alors au caractère précédent si ces caractères réinterprétés sont précédés du contrôle retour arrière, sinon ils s’appliquent au caractère suivant comme s’ils étaient saisis comme touches mortes (et dans ce cas le transcodage vers Unicode nécessitera une inversion du caractère suivant et du diacritique) ; on peut aussi coder la combinaison du caractère de base et du diacritique avec un caractère Unicode précombiné (en forme normale C) correspondant à cette combinaison, si elle est codée dans Unicode. Dans ce cas, les ponctuations, symboles et lettres modificatives suivants sont réinterprétés ainsi :
ISO 646 | Interprétation isolée | Interprétation avec BS et un autre caractère (ici « o ») | ||||
---|---|---|---|---|---|---|
hexa | Caractère | Unicode | Nom | Caractère | Unicode | Nom |
0x22 | "
|
U+0022 | guillemet anglais | ö
|
U+0308 | diacritique tréma (ou diérèse ou umlaut) |
0x27 | ´
|
U+00B4 | accent aigu | ó
|
U+0301 | diacritique accent aigu (ou oxeia en grec) |
0x2C | ,
|
U+002C | virgule | o̦
|
U+0326 | diacritique virgule souscrite (en roumain) |
o̧
|
U+0327 | diacritique cédille (sauf en en roumain) | ||||
0x2D | -
|
U+002D | tiret-moins | o̵
|
U+0335 | diacritique barre courte couvrante |
0x2F | /
|
U+002F | barre oblique | o̷
|
U+0337 | diacritique barre oblique courte couvrante (avec une minuscule) |
o̸
|
U+0338 | diacritique barre oblique longue couvrante (avec une majuscule) | ||||
0x5B | °
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef |
0x5E | ^
|
U+02C6 | lettre modificative accent circonflexe (avec chasse) | ô
|
U+0302 | diacritique accent circonflexe |
0x5F | _
|
U+005F | tiret bas | o̱
|
U+0331 | diacritique macron souscrit |
0x60 | `
|
U+0060 | accent grave (avec chasse) | ò
|
U+0300 | diacritique accent grave |
0x7B | °
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef |
´
|
U+00B4 | accent aigu | ó
|
U+0301 | diacritique accent aigu (ou oxeia en grec) | |
0x7E | ¨
|
U+00A8 | tréma (avec chasse) | ö
|
U+0308 | diacritique tréma (ou diérèse ou umlaut) |
°
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef | |
ˉ
|
U+02C9 | lettre modificative macron (avec chasse) | ō
|
U+0304 | diacritique macron | |
˜
|
U+02DC | petit tilde (avec chasse) | õ
|
U+0303 | diacritique tilde | |
˝
|
U+02DD | double accent aigu (avec chasse) | ő
|
U+030B | diacritique double accent aigu |
Notes et références
[modifier | modifier le wikicode]- ↑ http://www.ecma-international.org/publications/standards/Ecma-006.htm Standard ECMA-6 7-bit Coded Character Set 6th edition (December 1991) http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-006.pdf
Liens externes
[modifier | modifier le wikicode]
Les extensions de l'ISO 646
ISO/CEI 6937, intitulée Technologies de l’information — Jeu de caractères graphiques codés pour la transmission de texte — Alphabet latin, est une norme internationale de l’ISO publiée pour la première fois en 1983 et définissant un codage de caractères étendant le codage ISO/CEI 646 (dont la variante la plus connue est ASCII). Elle a été conçue en collaboration avec l’UIT-T (le Secteur de la normalisation des télécommunications de l’Union internationale des télécommunications — Comité Consultatif International Téléphonique et Télégraphique à l’époque). Sa dernière actualisation date de 2009.
Ses principaux architectes furent Hugh McGregor Ross, Peter Fenwick, Bernard Marti et Luek Zeckendorf.
Ce jeu de caractères se distingue des précédents en ce que les lettres diacritées sont encodées sur deux octets, le premier indiquant le diacritique et le second, la lettre. L’encodage est ainsi à longueur variable, complication qui jointe à différents défauts peut expliquer la réticence de certains industriels à implémenter cette norme. Cet échec a porté préjudice à la langue française dans le sens où ISO/CEI 6937 est le premier jeu de caractères à supporter l’e dans l’o, et que ce défaut d’implémentation engendra indirectement l’exclusion de l’œ/Œ du jeu de caractères suivant, le Latin-1[1].
Répertoire
[modifier | modifier le wikicode]À un certain stade de la vie d’ISO/CEI 6937 le jeu de caractères comprenait 327 caractères graphiques, dont 159 caractères latins de base et symboles, 13 diacritiques, et 155 diacrités. Les caractères de contrôle C0 et C1 n’étant pas couverts par la norme, les 2×2 rangées sont réservées. C’est cet état plus le symbole € – ajouté pour la troisième édition en 2001 – qui est rendu dans les tableaux ci-dessous. En 1998 le rédacteur d’ISO/CEI 6937 fit état de 333 caractères (espace comprise)[2].
Caractères codés sur un octet
[modifier | modifier le wikicode]Les 128 premiers caractères reprennent le jeu US-ASCII ou ISO/CEI 646. Dans ISO/CEI 6937 cet ensemble s’appelle jeu primaire. Une exception : le symbole $ a été remplacé dans un premier temps par le symbole monétaire générique ‘¤’, mais cette anomalie a été corrigée par la suite.
Voici la liste d’origine du jeu primaire (noter le ¤ à la place du $) :
!"#¤%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz{|}
Le jeu secondaire comporte divers symboles, entrecoupés de la rangée des diacritiques (C1..CF). On y trouve des originalités comme la croche (♪) en plus de 4 flèches simples et 7 fractions ordinaires[3]. Le jeu se termine par une série de lettres utilisées dans les langues d’Europe à écriture latine, qui sont entre autres des ligatures orthographiques (æ, ij, œ, ß), des lettres particulières (ed ð, eng ŋ, thorn þ, kra ĸ), ou encore des lettres avec un diacritique traversant (đ, ħ, ł, ø, ŧ). 10 positions étaient mises en attente, dont A4Modèle:Hex qui recut plus tard le symbole de l’euro.
Dans le tableau ci-après, les unicodes sont donnés à titre purement indicatif. En particulier les unicodes des diacritiques combinants accompagnant les diacritiques d’ISO/CEI 6937 ne signifient pas que ces derniers seraient combinants, car en réalité ils sont seulement des moitiés de code des caractères précomposés tels qu’ils figurent dans le tableau suivant.
Noter que la majuscule du D barré est manquante, l’utilisateur étant censé saisir un ed majuscule (Ð) qui a même aspect, tandis que les minuscules sont différentes : ð pour 0xF2, đ pour 0xF3. Unicode n’unifie pas ces deux majuscules.
Cette norme ne définit pas les caractères de contrôle 00Modèle:Hex à 1FModèle:Hex et 80Modèle:Hex à 9FModèle:Hex.
Modèle:Chset-table-headerCaractères codés sur deux octets
[modifier | modifier le wikicode]Les 155 lettres diacritées qui font partie du jeu mais ne figurent pas dans le tableau ci-dessus sont encodées non pas sur un mais sur deux octets, dont le premier a la signification d’un diacritique pris dans une liste de 13 diacritiques supportés, et le second, une lettre prise dans le jeu primaire.
Que le g minuscule avec cédille (ģ) soit parmi les lettres avec accent aigu est une anomalie due à l’idée que par le fait de sa descendante cette lettre s’écrirait avec un accent aigu au lieu d’une virgule tournée (Ģ ģ) et s’appellerait en conséquence. Dans la troisième édition de la norme en 2001 le nom du g cédille minuscule a été mis en conformité avec Unicode, tandis que son encodage restait avec le code de l’accent aigu (C2Modèle:Hex) pour la rétrocompatibilité.
Diacritique | Code hexadécimal figurant en premier | Caractères possibles comme Modèle:2e octet | Caractères précomposés résultants |
---|---|---|---|
Accent grave | 0xC1 | AEIOUaeiou | ÀÈÌÒÙàèìòù |
Accent aigu | 0xC2 | ACEILNORSUYZacegilnorsuyz | ÁĆÉÍĹŃÓŔŚÚÝŹáćéģíĺńóŕśúýź |
Accent circonflexe | 0xC3 | ACEGHIJOSUWYaceghijosuwy | ÂĈÊĜĤÎĴÔŜÛŴŶâĉêĝĥîĵôŝûŵŷ |
Tilde | 0xC4 | AINOUainou | ÃĨÑÕŨãĩñõũ |
Macron | 0xC5 | AEIOUaeiou | ĀĒĪŌŪāēīōū |
Brève | 0xC6 | AGUagu | ĂĞŬăğŭ |
Point en chef | 0xC7 | CEGIZcegz | ĊĖĠİŻċėġż |
Tréma | 0xC8 | AEIOUYaeiouy | ÄËÏÖÜŸäëïöüÿ |
Rond en chef | 0xCA | AUau | ÅŮåů |
Cédille | 0xCB | CGKLNRSTc(voir aigu)klnrst | ÇĢĶĻŅŖŞŢç(voir aigu)ķļņŗşţ |
Double accent aigu | 0xCD | OUou | ŐŰőű |
Ogonek | 0xCE | AEIUaeiu | ĄĘĮŲąęįų |
Háček (“Caron”) | 0xCF | CDELNRSTZcdelnrstz | ČĎĚĽŇŘŠŤŽčďěľňřšťž |
Avantages et limites
[modifier | modifier le wikicode]Si cette norme a été supplantée par ISO/CEI 8859 puis par Unicode (ISO/CEI 10646), elle n’en conserve pas moins une importance historique en ce qu’elle permet d’expliquer un certain nombre de problèmes qui impactent encore de nos jours l’expression écrite de la Francophonie.
Points forts
[modifier | modifier le wikicode]- Encodage sous forme de jeu de caractères unique d’un nombre bien supérieur aux 28=256 caractères, premier encodage à longueur variable.
- Prise en charge de l’e dans l’o et de l’ij en plus de l’Æ (toujours bien supporté car étant une lettre danoise) ainsi que de divers symboles. Ce support accordé au français et au néerlandais était dû à n’en pas douter à l’engagement des membres français et néerlandais de l’équipe d’architectes, Bernard Marti et Luek (Loek) Zeckendorf.
Points neutres
[modifier | modifier le wikicode]- Velléité de recaler au rang de simple symbole monétaire le $ pourtant utilisé dans les langages de programmation. Sans accès à la première version du standard on peut simplement supposer que le $ et le ¤ étaient permutés, le premier finissant dans le jeu supplémentaire. Mais dans la version représentée dans le tableau ci-dessus le $ a déjà repris sa place traditionnelle. Le principal architecte ayant été britannique, on peut suspecter des raisons politiques derrière cette valse du symbole dollar, à l’instar de celles qui animèrent plus tard le premier rédacteur en chef d’ISO/CEI 10646, pareillement britannique, à insister lors des négociations de fusion pour qu’Unicode adopte les formes britanniques des noms de caractères[4].
- Absence de prise en charge de la virgule souscrite du Roumain, différenciée d’avec la cédille. Mais la désunification des deux diacritiques aurait eu de lourdes conséquences politiques[5].
Faiblesses
[modifier | modifier le wikicode]- Pas de support pour le grec et le cyrillique, de sorte que l’Europe n’est pas couverte.
- Pas de support pour les langues africaines, notamment le bambara parlé au sein de la Francophonie (notamment au Mali et utilisant depuis l’année précédente (1982) trois lettres non couvertes (Ɛ, Ɲ, Ɔ).
- Pas d’octet diacritique rayé/barré alors que 2 ou 3 places dans la rangée des diacritiques sont vides. Ce diacritique aurait permis d’économiser jusqu’à 10 places. Effet secondaire : les lettres rayées étaient disposées toutes sur des touches jusqu’en 2010, année où Karl Pentzlin rationalisa ces diacrités par l’ajout d’une touche morte rayé et d’une touche morte barré sur les claviers DIN 2137:2012 T2 et T3.
- Le double diacritage est impossible, ce qui exclut le support du vietnamien] et des autres langues – y compris européennes – écrites avec des doubles diacrités : letton, lituanien, …
- Oubli des guillemets allemands : Les guillemets-virgules simples et doubles sont présents mais la variante basse (surtout double : „) manque, qui s’utilise en allemand, langue pourtant couverte par ce jeu de caractères.
- Absence des guillemets-chevrons simples (‹ ›), utilisés couramment pour les citations nichées en allemand (› ‹), et recommandée aussi dans les autres langues utilisant les guillemets-chevrons (doubles : « »).
- Impasse sur les chiffres en exposant autres qu’1, 2 et 3, ainsi que sur les chiffres en indice alors que l’architecture permettait d’encoder tous ces caractères avec les octets circonflexe et háček (“caron”). Partant, les utilisateurs sont privés de la possibilité de saisir des fractions “vulgaires” personnalisées, et l’expression est cantonnée aux quarts et huitièmes disponibles aussi sur certaines machines à écrire néerlandaises, c’est-à-dire au pays dont était originaire l’un des architectes.
- Omission des flèches obliques, pourtant gravées sur les pavés numériques, et des flèches doubles alors même qu’elles étaient facilement encodables à l’aide des octets pour l’accent aigu et le double accent aigu existants suivis des chiffres correspondants.
- Unification des majuscules de l’ed (ð, Ð) et du d barré (đ, Đ) conduisant à des dysfonctionnements en traitement de texte (conversion de la casse), alors qu’il restait une dizaine de places libres.
- Changement de diacritique au changement de casse pour le G cédille (Ģ, ģ) qui complique l’implémentation de l’entrée de texte et de la conversion de la casse.
Alors même que l’architecture d’ISO/CEI 6937 autorise l’encodage sur deux octets d’un ensemble de caractères arbitraires, la norme est construite comme si l’octet diacritique était une sorte de diacritique combinant, ou plutôt fonctionnait un peu comme dans ISO/CEI 646. Cette caractéristique donne à ISO/CEI 6937 l’aspect d’une étape intermédiaire, tiraillée entre deux époques, une sorte de balbutiement pré-Unicode. Ainsi ISO/CEI 6937 a un côté inachevé voire inconséquent et reste malheureusement en deçà de son potentiel. Vu d’aujourd’hui, tout se passait comme si ce n’était pas encore l’heure de l’encodage à longueur variable, difficile à implémenter et en l’occurrence si peu gratifiant en fin de compte qu’ISO/CEI 6937 peinait à convaincre les industriels. Trois ans après sa première publication l’un des plus grands n’avait toujours pas implémenté son jeu de caractères dans ses imprimantes[6].
Utilisation et influence
[modifier | modifier le wikicode]ISO/CEI 6937 a été utilisée en Télétexte[7]. À cet effet elle a même été complétée du symbole de l’euro.
L’IANA a enregistré les noms du jeu de caractères ISO_6937-2-25 et ISO_6937-2-add pour deux versions plus anciennes de cette norme (plus les codes de contrôle). Mais en pratique cet encodage n’est pas utilisé sur internet.
La séquence d'échappement ISO/CEI 2022 pour spécifier le côté droit du jeu de caractères ISO/CEI 6937 est ESC - R
(hex 1B 2D 52
)[8].
ISO/CEI 6937 a profondément influencé le Jeu partiel européen multilingue 1 (Multilingual European Subset 1, MES-1) de 1998, dans lequel elle est entièrement incluse tout en étant complétée de 29 lettres majuscules/minuscules[9], dont notamment le D barré majuscule, et du symbole de l’euro. Par ce biais elle se retrouve sur les dispositions de clavier conformes à ISO/CEI 9995-3:2002, notamment le clavier Canadien multilingue standard, et par rétrocompatibilité aussi sur les claviers allemands T2 et T3 de 2012, conformes à ISO/CEI 9995-3:2010.
Étant donné que Modèle:Pourquoi, les choix des architectes d’ISO/CEI 6937 laisseront des traces sur nos claviers à tout jamais.
Notes et références
[modifier | modifier le wikicode]- ↑ Jacques André, « ISO-Latin-1, norme de codage des caractères européens ? trois caractères français en sont absents ! - CG_1996___25_65_0.pdf », (consulté le 22 septembre 2014)
- ↑ Keld Jørn Simonsen, « Unicode Mail List Archive: Re: ISO 6937 », (consulté le 18 mai 2016)
- ↑ Ce qui s’appelle vulgar fraction en anglais ou « fraction vulgaire » à l’époque moderne est une fraction ordinaire en français contemporain. Voir dans la traduction française des tableaux de codes Unicode. — Edward Cherlin, « Unicode Mail List Archive: Re: Fractions », (consulté le 21 mai 2016)
- ↑ Andrew West, « BabelStone: Unicode Character Names Part 2 : A Name is for Life », (consulté le 6 février 2015)
- ↑ Johan W. van Wingen, « Netherlands Position Paper », (consulté le 21 mai 2016)
- ↑ Lire les conséquences de cette situation dans l’article cité de Jacques André.
- ↑ ETS 300 706 - Enhanced Teletext specification p. 116
- ↑ Supplementary Set of ISO/IEC 6937:1992 The high-ASCII half of the character set. (Le côté gauche est U.S. ASCII.)
- ↑ Information Technology - Multilingual European Subsets of ISO/IEC 10646-1 p. 10
Voir aussi
[modifier | modifier le wikicode]Liens externes
[modifier | modifier le wikicode]ISO/IEC 6937:2001 Information technology — Coded graphic character set for text communication — Latin alphabet, ISO/IEC, (lire en ligne) (La troisième édition (2001) de cette norme est accessible et téléchargeable en entier gratuitement via la fonctionnalité d’aperçu sur le site officiel de l’ISO à l’adresse indiquée. Sa dernière édition date de 2009.)
Les extensions de l'ASCII
Les codages de caractères ASCII étendu plus connus dans leur dénomination anglaise extended ASCII sont un ensemble de jeu de codage de caractères qui ont en commun le sous-ensemble de caractères ASCII. Ce terme est informel et peut être critiqué pour deux raisons: D'une part cette dénomination pourrait laisser penser que le standard ASCII aurait été étendu, alors qu'il désigne en fait un ensemble de normes qui incluent le sous-ensemble ASCII; D'autre part, l'ASCII étendu ne désigne pas un codage de caractère donné mais un ensemble de normes précisant chacune un codage de caractères différent contenant l'ASCII comme sous-ensemble.
La notion d' extended aSCII est d'un usage commun dans la documentation technique. Elle est reprise par le MSDN de Microsoft [1]. Elles est reprise par de nombreuses pages de manuel Unix comme celles de MacOS X [2].
La société britannica associe ce concept à l'année 1981, à IBM et au codage 8 bits[3].
Variations et extensions
[modifier | modifier le wikicode]Vu l'existence de milliers de standards et variantes informatiques de codage des caractères, il est difficile de se faire une idée des liens de parentés entre chacun d'entre eux. le tableau suivant donne une illustration du positionnement de l'ASCII, des ses extensions et de ses variantes, par rapport à quelques familles de standards informatiques, dans un contexte temporel.
Télégraphie | Téléphonie | Informatique | Avion | ||||
---|---|---|---|---|---|---|---|
Code Baudot | |||||||
↓ | |||||||
A.I. 2 | |||||||
Diverses varaiations des codages EBCDIC et autres codages | |||||||
↓ | |||||||
ISO-646 - IRV ( variante internationale) | Arinc | ||||||
↓ | ↓ | ↓ | ↓ | ||||
ISO-646 - US (États-Unis) | |||||||
ISO-646: Autres nations | |||||||
↓ | |||||||
ISO-646: Autres nations | |||||||
↓ | ↓ | ↓ | ↓ | ↓ | |||
ASCII | Page de code DOS (437, 850, ...) | Séries ISO 8859 (exemple ISO 8859-1, ISO 8859-15) | ISO 2022 (illimité à 256 caractères) | ↓ | |||
↓ | ↓ | ||||||
Codage windows (Windows-1252, etc) ou Ansinew | ↓ | ||||||
↓ | ↓ | ↓ | ↓ | ↓ | |||
ISO 10646 / Unicode | |||||||
↓ | |||||||
AI n°5 | en:GSM 03.38 (SMS) |
Légende : | |
ASCII | Un des standards assimilable à l'ASCII |
Extensions de l'ASCII | Complète l'ASCII |
Variante de l'ASCII | Différents de l'ASCII pour quelques caractères |
Précurseur de l'ASCII | Un sous-ensemble |
Sans lien avec l'ASCII | Sans lien avec l'ASCII |
Historique et perspectives
[modifier | modifier le wikicode]Le besoin d'uniformiser les codages des caractères tout en préservant des spécificités locales a été ressenti dès avant les années 1960, avec l'apparition de normes ISO-646 et de ses différentes déclinaisons locales dont l'ASCII. Si à l'origine, l'ASCII a été pensé comme un codage de caractère pour les États-Unis, l'influence de l'industrie informatique a conduit à délaisser les différentes variantes de l'ISO-646 pour imposer l'ASCII. Le choix de codage d'un octet par caractère a dans un premier temps permis de représenter les caractères absents de l'ASCII. Il ne posait pas de problème à l'époque, dans la mesure où les ordinateurs n'étaient pas connectés en réseau.
Diverses extensions propriétaires sont apparues sur les PC non-EBCDIC, en particulier dans les universités. Atari et Commodore s a ajouté de nombreux symboles graphiques non-ASCII (Respectivement, ATASCII et PETSCII, basé sur la norme ASCII originald de 1963).
IBM a introduit des codes huit bits ASCII étendus sur IBM PC original et plus tard produit des variates pour des langues et de cultures différentes. IBM a appelé ces jeux de caractères pages de code et a désigné chaque jeu de page de code par un numéro assignés. En conséquence, les jeux de caractères sont très souvent indiquées par leur numéro de page de code IBM. Dans les pages de code ASCII compatibles, les 128 caractères faibles ont maintenu leurs standards valeurs ASCII, et différentes pages (ou des ensembles de caractères) peuvent être mis à disposition dans les 128 caractères. Dans les premiers PC commercialisés dans le marché nord-américain, par exemple, sous DOS la page de code 437 était utilisée, elle incluait quelques-uns des caractères accentués nécessaires pour le français, l'allemand, et quelques autres langues européennes, ainsi que certaines graphique de dessin de ligne caractères. Les différentes jeux de caractères ont permis de créer des fichiers et documents dans une combinaison de langues telles que Anglais et Français (si les ordinateurs français utilisent généralement des code page 850), mais pas, par exemple, en français et en grec (qui exigeait la page de code 737).
Apple Computer ont introduit leurs propres 8-bit codes ASCII étendus dans Mac OS, comme Mac OS Roman.
Digital Equipment Corporation a développé le caractère multinational, qui avait lettre caractères maximum mais de plus en combinaisons diacritiques, basée sur des versions préliminaires de ISO 8859. Il a été soutenu par le VT220.
Fonctionnement et Théorie
[modifier | modifier le wikicode]L'utilisation de codages de caractères de type ASCII étendu repose d'une part sur la reconnaissance de syntaxe basée sur l'ASCII, et d'autre part sur un traitement souvent indifférencié des 128 valeurs restantes d'octet.
Cet aspect a été important pour les langages de programmations comme le langage C ou d'autre langages comme le HTML. Il a permis d'utiliser ces mêmes langages informatiques dans différents pays, grâce à l'ASCII, tout en permettant l'introduciton de chaîne de caractères et de commentaires dans la langue approppriée (locale, régionale ou nationale).
Apports et limitations
[modifier | modifier le wikicode]La notion d'ASCII étendu a permis à moindre coût de déployer mondialement des logiciels représentant le texte en peu d'octets et d'ignorer tout ou partie des problématiques d'internationalisation. Il a également conduit a des problématiques d'intéropérabilité qui ont abouti à l'émergence de standards tels qu'Unicode.
Apports
[modifier | modifier le wikicode]Les codages de caractères étendant l'ASCII additionnent à l'ASCII les caractères manquants à une langue, un culture ou un pays.
La préservation de l'ASCII permet la préservation des caractères de contrôle, la préservation des nombres et des labels en caractères non accentués. Elle permet également la préservation de symboles spécifiques à l'ASCII mais très utilisés en informatique, notamment dans les langages de programmation, comme les parenthèses, les chevrons, les accolades ou les crochets. Avant l'émergence de ce concept, le langage C avait du avoir recours au concept de digrammes et de trigrammes pour pallier l'absence de ces caractères. Depuis l'utilisation de l'ASCII étendu, l'usage des digrammes et des trigrammes dans le langage C est tombé en désuétude.
L'existence de 128 valeurs permet d'ajouter par exemple 128 caractères, qui selon le cas peuvent être des symboles graphiques informatique, des symboles mathématiques (lettre grecques), des alphabets ou compléments d'alphabet locaux, des symboles littéraires, ou de ponctuation, des symboles commerciaux.
Les codages de caractères ISO-8859 apportent également une deuxième plage de caractères de contrôle dite C1, entre les valeurs 128 et 159.
Un logiciel, un protocole, un fichier de configuration, un fichier de code sources ou tout autre service peut-donc dans une certaine mesure être interopérable avec un ensemble de codage de caractères étendant l'ASCII, sans connaître précisément les différentes extensions existantes.
Limitations
[modifier | modifier le wikicode]Les différentes techniques d'extension de l'ASCII posent différentes problématiques:
S'il peut-être est facile de savoir que le codage est en partie ASCII, l'autre partie du codage est parfois ou souvent incertaine.
Les extensions de l'ASCII peuvent reposer sur des techniques variées. Certaines techniques garantissent que chaque octet représente un caractère, alors que d'autres utilisent plusieurs octets pour représenter un caractère. Certaines extensions introduisent des octets nuls (UTF-16) alors que d'autres réservent l'usage de cette valeur particulière. Certaines extensions garantissent qu'un octet a toujours la même signification, alors que dans d'autres (ISO-2022), la caractère représenté par un octet dépend du contexte. Certaines extensions permettent des séquences d'échappement dans lesquels les valeurs de caractères ASCII ne sont pas des caractères ASCII. Certaines extensions apportent des caractères de contrôles ou des caractères d'espacement qui ne sont pas reconnus par tous les logiciels.
Cette diversité est généralement difficile ou impossible à gérer entièrement et peut conduire à des problématiques d'interopérabilité comme à des mojibake ou autres affichages malencontreux.
Standardisation et normalisation
[modifier | modifier le wikicode]Il n'existe pas de standardisation spécifique de la notion d'ASCII étendu. Elle est donc sujette a interprétation. Ainsi certains considèrent que la présence d'un byte order mark suffit à dire que l' UTF-8 n'est pas de l'extended ASCII; la même question peut se poser pour des codages de caractères tels que shift JIS ou ceux incluant des séquences d'échappement. Alors que d'autres considèrent que l'UTF-16 est une forme d'extension de l'ASCII.
Usages et applications
[modifier | modifier le wikicode]Dans de nombreux protocoles, les plus important courrier électronique et HTTP, le codage de caractères du contenu doit être étiqueté avec des attributs IANA des identificateurs de jeu de caractères.
Aspects économiques et sociaux
[modifier | modifier le wikicode]Cette technologie a dominé le monde informatique durant la seconde moitié du vingtième siècle, depuis l'introduction de l'ordinateur, jusqu'à la banalisation de l'ISO-10646 plus connu sous le nom commercial d'Unicode.
Parce que ces extensions ASCII sont autant de variantes, il est nécessaire d'identifier quel jeu est utilisé pour un texte particulier pour qu'il puisse être interprété correctement. Cependant, parce que les caractères les plus utilisés (ceux en ASCII, les points de code sept bits) sont communs à tous les jeux, il est extrêmement difficile d'identifier correctement un jeu de caractères. Si cela est sans incidence pour un fichier en langue anglaise cela a des conséquences fâcheuses pour les utilisateurs d'autres langues.
Par ailleurs, sur internet, parce que les logiciels de nombreux internautes utilisent la norme ISO 8859-1, et parce que Microsoft Windows (en utilisant la page de code 1252-ensemble de la norme ISO 8859-1) est le système d'exploitation en position dominante pour les ordinateurs personnels d'aujourd'hui, l'utilisation inopinée/impromptue de la norme ISO 8859-1 est tout à fait banalisé, et a souvent été présumée sans preuve du contraire.
Bibliographie
[modifier | modifier le wikicode]- International support in application and system software, Mark Davis et Jack Grimes [1]
De nombreux livres apparaissent dans Google Books lors de la recherche de "Extended ASCII". Ces livres utilisent la dénomination Extended ASCII, sans nécessairement la définir.
À titre d'exemple :
- Advanced Rails - Page 238
- Mastering Microsoft Windows Vista Home: Premium and Basic - Page 219
- High Definition: An A to Z Guide to Personal Technology - Page 119
- Digital Typography Using LaTeX - Page 14
- New Perspectives on Microsoft Office 2007 - Page 13
- New Perspectives on Computer Concepts - Page 24
- Dictionary of Information Technology - Page 212
Notes et références
[modifier | modifier le wikicode]
Applications
L'ASCII est utilisé comme base de grand nombre des centaines de jeux de caractères ayant existé et été utilisé pour communiquer à travers le monde.
L'ASCII a servi de base à Unicode.
L'ASCII est utilisé comme base de nombre de protocoles informatiques.
L'ASCII ou des variantes ont servi de base au développement d'application minitel et télétexte.
L'ASCII a été le principal vecteur de base pour l'écriture de codes sources de logiciel.
Fonctionnalités usuelles et algorithmes
L’ASCII se retrouve dans le programmation de logiciel à travers différentes librairies.
Classes de caractères POSIX
[modifier | modifier le wikicode]Puisque de nombreux sous-ensembles et étendues de caractères sont dépendants de la locale utilisée (par exemple, dans certaines configurations, les lettres sont organisées en abc...zABC...Z, mais comme aAbBcC...zZ dans d’autres), le standard POSIX définit certaines classes ou catégories de caractères comme montré dans la table ci-dessous :
Classe POSIX | Description | Classe équivalente dans le jeu ASCII et la locale "C" |
---|---|---|
[:cntrl:]
|
Caractère de contrôle | [\x00-\x1F\x7F]
|
[:space:]
|
Espace blanc ou séparateur de ligne ou de paragraphe | [ \t\r\n\v\f]
|
[:blank:]
|
Espace blanc ou tabulation non séparateur de ligne ou de paragraphe | [ \t]
|
[:print:]
|
Espace simple ou caractère graphique visible (voir ci-dessous la différence avec Perl). | [\x20-\x7E]
|
[:graph:]
|
Caractère graphique visible | [\x21-\x7E]
|
[:punct:]
|
Caractère de ponctuation | [!"#$%&'()*+,-.\/:;?@[\\\]_`{|}~]
|
[:alnum:]
|
Caractère alphanumérique | [0-9a-zA-Z]
|
[:digit:]
|
Chiffre décimal | [0-9]
|
[:xdigit:]
|
Chiffre hexadécimal | [0-9a-fA-F]
|
[:alpha:]
|
Caractère alphabétique | [a-zA-Z]
|
[:lower:]
|
Lettre minuscule | [a-z]
|
[:upper:]
|
Lettre capitale | [A-Z]
|
Par exemple, [[:upper:]ab]
fait correspondre un caractère parmi l’ensemble formé par l’union des lettres minuscules « a » et « b » et du sous-ensemble des lettres capitales.
Dans les expressions rationnelles de Perl, la classe [:print:]
est définie différemment et correspond à [:graph:]
union [:space:]
(Perl y inclut donc les tabulations et séparateurs de lignes ou de paragraphes, contrairement à POSIX).
Une classe additionnelle non POSIX, supportée par certains outils, est [:word:]
qui est généralement définie comme [:alnum:]
plus le soulignement ; cela traduit le fait que dans bien des langages de programmation, ce sont les caractères qui peuvent être utilisés dans un identificateur. L’éditeur de texte Vim distingue encore les classes [:word:]
et [:word-head:]
(en utilisant aussi les notations supportées \w
et \h
) puisque dans nombre de langages de programmation, les caractères utilisables au début d’un identificateur ne sont pas les mêmes que ceux utilisables dans les autres positions.
Ordre ASCII
[modifier | modifier le wikicode]L'ordre ASCII est parfois appelé ordre ASCIIbetical[1]. La Collation des données est parfois faite dans cet ordre plutôt que dans l'ordre alphabétique usuel (collating sequence). Les principales déviations de l'ordre ASCII sont les suivantes:
- Toutes les lettres majuscules viennent avant chacune des lettres minuscules par exemple « X,Y,Z » avant « a,b,c »
- Les chiffres et des marques de ponctuation viennent avant les lettres par exemple « 4 » vient avant « un »
- Les nombres sont triés naïvement comme des mots par exemple « 10 » précède « 2 ».
- L'ASCII n'offre pas de moyen de placer les lettres accentuées qui ont été éradiquées de ce standard
Un ordre intermédiaire consiste à convertir les majuscules en minuscules avant d'effectuer l’ordonnancement des valeurs ASCII. L'ordonnancement naïf des nombres peut être contourné, en donnant à chacun un nombre identique de chiffres par exemple « 02 » sera avant « 10 » mais il ne s'agit que d'un contournement pratique qui ne change pas l'ordre ASCII lui-même.
Références
[modifier | modifier le wikicode]- ↑ ASCIIbetical definition. [[w:PC Magazine|]]. Accessed 2008-04-14.
Perspectives
Si dans les années 1960, le standard ASCII ouvrait la porte à la standardisation de quelques caractères qui permirent pendant quelques décennies de lancer l'informatisation e notre civilisation, ses propres limites ne se sont pas faite attendre.
Après que différentes techniques visant à dépasser les limites de l'ASCII ont été expérimentées, il semble que l'un des standards et normes les plus prometteurs est aujourd'hui l'ensemble Unicode / ISO-10646.
Il s'agit cependant d'un vaste sujet, qui ne se contente pas de redéfinir le jeu de caractère ou la notion de caractère, puisqu'il aborde d'autres notions tant relatives au sens d'écriture, à la casse, qu'à la composition et à la décomposition de caractère.
Toutefois, l'objet de cette page n'est pas de décrire les ambitions d'Unicode qui seront sans doute mieux décrites dans le wikilivre À la découverte d'Unicode !
L'ASCII aura été d'une influence si-grande, qu'il n'aura pas pu ne pas laisser sa trace, tant et si bien qu'à la fois l'UTF-8 et l'UTF-16 peuvent être vu comme des extensions de l'ASCII.
Saisie des caractères
Le standard ASCII s'est tellement imposé comme unique moyen d'écrire un logiciel et avec la langue anglaise. Ainsi, aujourd'hui, nombre de claviers à travers le monde permettent de saisir la quasi-totalité des caractères ASCII.
GFDL | Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture. |