Les ASCII de 0 à 127/Version imprimable

Un livre de Wikilivres.

Ceci est la version imprimable de Les ASCII de 0 à 127.
  • Si vous imprimez cette page, choisissez « Aperçu avant impression » dans votre navigateur, ou cliquez sur le lien Version imprimable dans la boîte à outils, vous verrez cette page sans ce message, ni éléments de navigation sur la gauche ou en haut.
  • Cliquez sur Rafraîchir cette page pour obtenir la dernière version du wikilivre.
  • Pour plus d'informations sur les version imprimables, y compris la manière d'obtenir une version PDF, vous pouvez lire l'article Versions imprimables.


Les ASCII de 0 à 127

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

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. Une copie de cette licence est incluse dans l'annexe nommée « Licence de documentation libre GNU ».

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]

bande de papier avec des trous représentant les "Code Baudot"

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]

Carte du recensement de Hollerith (1890)

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.

Voir aussi BCD et Fieldata.

Les années 1960[modifier | modifier le wikicode]

Une carte perforée 80 colonnes d'IBM d'un des types les plus utilisés au XX°siècle. La photographie fait apparaître le jeu de caractère EBCDIC de 1964: un chiffre est représenté par un trou, une lettre par deux et un symbole par trois. Le symbole affichable apparaît en noir bleuté sur fond bleu obscur sur le haut de la carte.

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]

  1. http://www.kerleo.net/computers/mecanographie.htm
  2. http://tronweb.super-nova.co.jp/characcodehist.html
  3. (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
    • Alphabet International de Référence n°5 (de 1988)[1].
    • Alphabet International de référence n°5 (dans le jeu G0 de l'IRV)[2].


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]

  1. Alphabet International de référence n°5, Union international des télécommunications, (lire en ligne)
  2. 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]

  1. http://homepages.cwi.nl/~dik/english/codes/stand.html#gost


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.

Structure de la table de code de 1 ISO / CEI 2022 chiffre
(a) 7 bits
 fort

faible 
00 01 02 03 04 05 06 07
00 [b]
01
02
03
04
05
06
07 C0 GL
08
09
10
11 [a]
12
13
14
15 [c]

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]

La table ASCII extraite d'un manuel d'imprimante de 1972

É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 :

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. 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)
  2. 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.
  3. name=Tiret bas
  4. Le code 96 est également employé comme guillemet ouvrant simple en ASCII. En Unicode, il existe un code plus approprié.
  5. 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

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

Les caractères

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 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.
 
101 1111 95 5F _ tiret bas

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
U+0326 diacritique virgule souscrite (en roumain)
U+0327 diacritique cédille (sauf en en roumain)
0x2D
-
U+002D tiret-moins
U+0335 diacritique barre courte couvrante
0x2F
/
U+002F barre oblique
U+0337 diacritique barre oblique courte couvrante (avec une minuscule)
U+0338 diacritique barre oblique longue couvrante (avec une majuscule)
0x5B
°
U+00B0 symbole degré
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
U+0331 diacritique macron souscrit
0x60
`
U+0060 accent grave (avec chasse)
U+0300 diacritique accent grave
0x7B
°
U+00B0 symbole degré
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é
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]

  1. voir Les ASCII de 0 à 127/La table ASCII


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)
Code ISO-
IR
Normalisation Origine Utilisation
INIS 049 AIEA INIS Sous-ensemble de l’IRV pour l’échange de données bibliographiques
ita 015 ECMA Olivetti Italien
PT 084 ECMA IBM Portugal (portugais, espagnol)
por 016 ECMA Olivetti Portugais (international)

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
U+0326 diacritique virgule souscrite (en roumain)
U+0327 diacritique cédille (sauf en en roumain)
0x2D
-
U+002D tiret-moins
U+0335 diacritique barre courte couvrante
0x2F
/
U+002F barre oblique
U+0337 diacritique barre oblique courte couvrante (avec une minuscule)
U+0338 diacritique barre oblique longue couvrante (avec une majuscule)
0x5B
°
U+00B0 symbole degré
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
U+0331 diacritique macron souscrit
0x60
`
U+0060 accent grave (avec chasse)
U+0300 diacritique accent grave
0x7B
°
U+00B0 symbole degré
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é
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]

  1. 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écommunicationsComité 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-legend

Modèle:Chset-table-header
Modèle:Chset-left Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3
Modèle:Chset-left Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3
Modèle:Chset-left Modèle:Chset-color-punct|Modèle:Chset-ctrl3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-digit|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-alpha|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-ctrl|Modèle:Chset-ctrl3
Modèle:Chset-left Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3
Modèle:Chset-left Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3
Modèle:Chset-left Modèle:Chset-color-ctrl|Modèle:Chset-ctrl3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-undef|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3 Modèle:Chset-color-ctrl |Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-undef|Modèle:Chset-ctrl3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-ctrl3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3
Modèle:Chset-left Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-intl |Modèle:Chset-cell3 Modèle:Chset-color-punct|Modèle:Chset-ctrl3

Modèle:Chset-table-footer

Caractè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é.

Caractères précomposés d’ISO/CEI 6937 encodés sur deux octets
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]

  1. 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)
  2. Keld Jørn Simonsen, « Unicode Mail List Archive: Re: ISO 6937 », (consulté le 18 mai 2016)
  3. 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)
  4. Andrew West, « BabelStone: Unicode Character Names Part 2 : A Name is for Life », (consulté le 6 février 2015)
  5. Johan W. van Wingen, « Netherlands Position Paper », (consulté le 21 mai 2016)
  6. Lire les conséquences de cette situation dans l’article cité de Jacques André.
  7. ETS 300 706 - Enhanced Teletext specification p. 116
  8. Supplementary Set of ISO/IEC 6937:1992 The high-ASCII half of the character set. (Le côté gauche est U.S. ASCII.)
  9. 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 page de code 437 apporte de nombreux symboles de dessin de boite, mais oublie les langues de l'Europe de l'Ouest et le symbole Euro.
Le codage de caractères windows-1252 contient les caractères d'Europe de l'Ouest ainsi que le symbole Euro.

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]

Titre de chanson qui devrait être en cyrilique (Моя Страна) sur un autoradio

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]

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