Les ASCII de 0 à 127/Caractères graphiques

Les ASCII de 0 à 127
Plan

Le contexte

Les textes ASCII

Pour les développeurs

Annexes

Modifier ce modèle


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

Les caractères

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

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

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

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

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

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
  1. voir Les ASCII de 0 à 127/La table ASCII