Les ASCII de 0 à 127/Les variantes de l'ISO 646
L'ISO/CEI 646 (ICS n°35.040) est une norme ISO qui depuis 1972 spécifie des codes de caractères graphiques codés sur 7 bits à partir desquels plusieurs normes nationales sont dérivées. La plus connue d'entre elles est la variante américaine, communément (mais improprement) désignée « ASCII ». L'ISO 646 est également désigné comme l'« Alphabet international de référence n°5 » (AIR5), « Alphabet international n°5 » (AI5) ou encore (en anglais) « International Alphabet No. 5 » (IA5).
Il est similaire, si ce n'est très proche ou identique au standard ECMA-6[1].
Généralités
[modifier | modifier le wikicode]Puisque la portion d’ISO/CEI 646 partagée par tous les pays n’est constituée que des lettres de l’alphabet latin de base suffisant pour l’anglais moderne, les autres langues utilisant un alphabet latin plus étendu ont eu besoin de créer des extensions et des variantes nationales de l’ISO 646 dans le but d'utiliser les lettres spécifiques à leurs langues.
À l’époque, la reconnaissance universelle d’un octet de 8 bit n’existait pas ; aussi, les jeux de caractères nationaux créent à travers cette contrainte de 128 caractères (27 = 128) ne purent pas toujours inclure tous les caractères ASCII qui n’apparaissaient pas dans les variantes nationales.
L’ISO 646 normalise donc les variantes nationales autorisées pour les jeux européens à caractères latins, permettant de créer un jeu de 94 caractères graphiques (numérotés de 33 à 126) comprenant 80 caractères invariants entre toutes les versions nationales, et 12 positions utilisables pour les caractères (alphabétiques ou non) nécessaires à une langue ou un groupe de langues. Il fixe également un alphabet international de référence (IRV) servant de guide (non impératif) pour le placement des 1 à 12 caractères sélectionnés sur les 12 positions variantes.
Les jeux ISO 646 incomplets sont autorisés (toutefois la plupart des jeux approuvés et inscrits dans le registre ISO-IR complètent les positions libres par les caractères du jeu de référence (similaire au jeu retenu pour la norme américaine, mais restreint aux seules 94 positions graphiques de la plage de code G0 définie par la norme de codage ISO 2022 avec laquelle la norme ISO 646 est totalement compatible).
Plus tard, lorsque les jeux de caractères composés de 8 bits devinrent plus fréquents, la norme ISO 8859 fut alors préférée à ces variantes nationales du jeu latin codé sur 7 bits, en imposant le choix de la variante 'ISO 646/IRV (c’est-à-dire le jeu graphique à 94 éléments enregistré sous le numéro ISO-IR/002) improprement appelée ASCII (qui désigne en fait le jeu de caractères latins américains codé sur 7 bits, complété du jeu de caractères de contrôles ISO 646/C0 (ISO-IR/001) pour les 32 premières positions). Toutefois, le développement de jeux de caractères plus étendu (sur 8 bits, et parfois avec des plans de codes multiples pour chaque bloc de 32, 94 ou 96 codes) s’est fondé sur la norme ISO 2022 permettant de les rendre compatibles avec un codage sur 7 bits, grâce à un système de séquences d’échappement et certains caractères de contrôle normalisés.
Les normes ISO 646 et ISO 8859 sont en principe figées depuis juin 2004 (la normalisation internationale de nouveaux jeux à 7 et 8 bits est désormais arrêtée, le groupe de travail de l’ISO ayant suspendu ses activités) et sont destinées à être remplacées par la nouvelle norme plus complète et plus précise ISO/CEI 10646 (liée à Unicode) dont l’interprétation et l’interopérabilité sont bien meilleures, cette dernière norme permettant de représenter tous les autres jeux de caractères normalisés existants et d’affiner le codage effectif final tout en préservant la sémantique du texte codé et en améliorant sa typographie. L’ISO/CEI 10646 a gardé la compatibilité ascendante avec la vieillissante norme ISO 646.
Caractères invariants
[modifier | modifier le wikicode]Les positions invariantes des jeux de caractères graphiques latins compatibles avec l’ISO 646 sont les suivantes :
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
010 0000 | 32 | 20 | espace | |
010 0001 | 33 | 21 | ! | point d’exclamation |
010 0010 | 34 | 22 | " | guillemet anglais |
010 0101 | 37 | 25 | % | signe pourcent |
010 0110 | 38 | 26 | & | esperluette |
010 0111 | 39 | 27 | ' | apostrophe |
010 1000 | 40 | 28 | ( | parenthèse ouvrante |
010 1001 | 41 | 29 | ) | parenthèse fermante |
010 1010 | 42 | 2A | * | astérisque |
010 1011 | 43 | 2B | + | signe plus |
010 1100 | 44 | 2C | , | virgule |
010 1101 | 45 | 2D | - | trait d’union-signe moins |
010 1110 | 46 | 2E | . | point |
010 1111 | 47 | 2F | / | barre oblique |
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
011 0000 | 48 | 30 | 0 | chiffre zéro |
011 0001 | 49 | 31 | 1 | chiffre un |
011 0010 | 50 | 32 | 2 | chiffre deux |
011 0011 | 51 | 33 | 3 | chiffre trois |
011 0100 | 52 | 34 | 4 | chiffre quatre |
011 0101 | 53 | 35 | 5 | chiffre cinq |
011 0110 | 54 | 36 | 6 | chiffre six |
011 0111 | 55 | 37 | 7 | chiffre sept |
011 1000 | 56 | 38 | 8 | chiffre huit |
011 1001 | 57 | 39 | 9 | chiffre neuf |
011 1010 | 58 | 3A | : | deux-points |
011 1011 | 59 | 3B | ; | point-virgule |
011 1100 | 60 | 3C | < | signe inférieur à |
011 1101 | 61 | 3D | = | signe égal à |
011 1110 | 62 | 3E | > | signe supérieur à |
011 1111 | 63 | 3F | ? | point d’interrogation |
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
100 0001 | 65 | 41 | A | A latine capitale A |
100 0010 | 66 | 42 | B | lettre latine capitale B |
100 0011 | 67 | 43 | C | lettre latine capitale C |
100 0100 | 68 | 44 | D | lettre latine capitale D |
100 0101 | 69 | 45 | E | lettre latine capitale E |
100 0110 | 70 | 46 | F | lettre latine capitale F |
100 0111 | 71 | 47 | G | lettre latine capitale G |
100 1000 | 72 | 48 | H | lettre latine capitale H |
100 1001 | 73 | 49 | I | lettre latine capitale I |
100 1010 | 74 | 4A | J | lettre latine capitale J |
100 1011 | 75 | 4B | K | lettre latine capitale K |
100 1100 | 76 | 4C | L | lettre latine capitale L |
100 1101 | 77 | 4D | M | lettre latine capitale M |
100 1110 | 78 | 4E | N | lettre latine capitale N |
100 1111 | 79 | 4F | O | lettre latine capitale O |
101 0000 | 80 | 50 | P | lettre latine capitale P |
101 0001 | 81 | 51 | Q | lettre latine capitale Q |
101 0010 | 82 | 52 | R | lettre latine capitale R |
101 0011 | 83 | 53 | S | lettre latine capitale S |
101 0100 | 84 | 54 | T | lettre latine capitale T |
101 0101 | 85 | 55 | U | lettre latine capitale U |
101 0110 | 86 | 56 | V | lettre latine capitale V |
101 0111 | 87 | 57 | W | lettre latine capitale W |
101 1000 | 88 | 58 | X | lettre latine capitale X |
101 1001 | 89 | 59 | Y | lettre latine capitale Y |
101 1010 | 90 | 5A | Z | lettre latine capitale Z |
101 1111 | 95 | 5F | _ | tiret bas |
Codes | Car. | Nom | ||
---|---|---|---|---|
binaire | déc. | hexa. | ||
110 0001 | 97 | 61 | a | lettre latine minuscule a |
110 0010 | 98 | 62 | b | lettre latine minuscule b |
110 0011 | 99 | 63 | c | lettre latine minuscule c |
110 0100 | 100 | 64 | d | lettre latine minuscule d |
110 0101 | 101 | 65 | e | lettre latine minuscule e |
110 0110 | 102 | 66 | f | lettre latine minuscule f |
110 0111 | 103 | 67 | g | lettre latine minuscule g |
110 1000 | 104 | 68 | h | lettre latine minuscule h |
110 1001 | 105 | 69 | i | lettre latine minuscule i |
110 1010 | 106 | 6A | j | lettre latine minuscule j |
110 1011 | 107 | 6B | k | lettre latine minuscule k |
110 1100 | 108 | 6C | l | lettre latine minuscule l |
110 1101 | 109 | 6D | m | lettre latine minuscule m |
110 1110 | 110 | 6E | n | lettre latine minuscule n |
110 1111 | 111 | 6F | o | lettre latine minuscule o |
111 0000 | 112 | 70 | p | lettre latine minuscule p |
111 0001 | 113 | 71 | q | lettre latine minuscule q |
111 0010 | 114 | 72 | r | lettre latine minuscule r |
111 0011 | 115 | 73 | s | lettre latine minuscule s |
111 0100 | 116 | 74 | t | lettre latine minuscule t |
111 0101 | 117 | 75 | u | lettre latine minuscule u |
111 0110 | 118 | 76 | v | lettre latine minuscule v |
111 0111 | 119 | 77 | w | lettre latine minuscule w |
111 1000 | 120 | 78 | x | lettre latine minuscule x |
111 1001 | 121 | 79 | y | lettre latine minuscule y |
111 1010 | 122 | 7A | z | lettre latine minuscule z |
Variantes nationales de l’ISO 646
[modifier | modifier le wikicode]De nombreuses variantes de l’ISO 646 ont été normalisées par des organismes nationaux officiels, et la plupart ont alors été déclarées dans le registre international (ISO-IR) des jeux de caractères à 7 et 8 bits. Cependant ce registre est maintenant clos depuis juin 2004, ses membres ayant décidé de concentrer leurs efforts au maintien de la norme universelle ISO/CEI 10646.
D’autres variantes ont été développées de façon initialement propriétaire pour couvrir les besoins de certaines langues, avant d’être enregistrées publiquement avec l’appui d’organismes de normalisation officiels (notamment l’ECMA au plan européen, afin de stabiliser les tables de conversions). Il existe cependant de nombreuses variantes propriétaires n’ayant pas reçu cet appui et qui donc n'ont pas été enregistrées formellement par l’ISO-IR (et dans l’immédiat, ne le seront sans doute jamais, leur obsolescence étant très accélérée du fait de l’imprécision de leur définition et de l’obsolescence parallèle des systèmes qui les supportaient).
Parmi les normes nationales enregistrées pour les variantes de l’ISO/CEI 646 on trouve :
Code | ISO- IR |
Norme | Utilisation |
---|---|---|---|
CA-1 | 121 | CSA Z243.4-1985 | Canada (alternative no.1, avec “î”) (français classique) |
CA-2 | 122 | CSA Z243.4-1985 | Canada (alternative no.2, avec “É”) (français orthographe réformée) |
CN | 057 | GB/T 1988-80 | Chine (latin basique) |
CU | 151 | NC 99-10:81 | Cuba (espagnol) |
DE | 021 | DIN 66083 | Allemagne (allemand) |
DK | — | DS 2089 | Danemark (danois) |
FR | 069 | AFNOR NF Z 62010-1982 | France (français) |
FR-0 | 025 | AFNOR NF Z 62010-1973 | France (obsolète depuis avril 1985) |
GB | 004 | BSI 4730 | Royaume-Uni (anglais) |
GR | 088 | HOS ELOT | Grèce (obsolète) |
HU | 086 | MSZ 7795/3 | Hongrie |
IE | 207 | NSAI 433:1996 | Irlande (gaélique irlandais) |
Code | ISO- IR |
Norme | Utilisation |
---|---|---|---|
INV | 170 | ISO 646:1983 | International (jeu graphique invariant) |
IRV | 002 | ISO 646:1983 | International (jeu graphique de référence) |
JA | 014 | JIS C 6220-1969 | Japon (romaji) |
JA-O | 092 | JIS C 6229-1984 | Japon (OCR-B) |
KR | — | KS C 5636-1989 | Corée du Sud (coréen romanisé) |
MT | — | Malte (maltais) | |
NO | 060 | NS 4551 version 1 | Norvège |
NO-2 | 061 | NS 4551 version 2 | Norvège (obsolète depuis juin 1987) |
SE | 010 | SEN 85 02 00 annexe B | Suède (suédois de base) |
SE-C | 011 | SEN 85 02 00 annexe C | Suède (suédois étendu pour les noms) |
T.61 | 102 | ITU/CCITT Recommandation T.61 | International (Teletex) |
US | 006 | ANSI X3.4-1968 | États-Unis (ASCII) |
YU | 141 | JUS I.B1.002 | ex-Fédération de Yougoslave (croate, slovène, serbe latin) |
Parmi les normes initialement propriétaires finalement approuvées au plan international pour l’interopérabilité grâce au support d'un organisme de normalisation, on trouve :
Code | ISO- IR |
Normalisation | Origine | Utilisation |
---|---|---|---|---|
ES | 085 | ECMA | IBM | Espagne (basque, castillan, catalan, galicien) |
esp | 017 | ECMA | Olivetti | Espagnol (international) |
DK-SE | 009-1 | SSK | NATS, jeu principal | Suède et Danemark (texte journalistique) |
FI-SE | 008-1 | SSK | NATS, jeu principal | Suède et Finlande (texte journalistique) |
Dans les tables ci-dessus, la colonne code indique la correspondance avec ceux utilisés comme libellés abrégés de colonnes pour repérer les caractères variants de la section suivante ; ces codes ne sont pas normalisés (seuls les numéros d’enregistrement ISO-IR le sont).
Codes de caractères variants
[modifier | modifier le wikicode]Les caractères affichés sur fond bleu ou jaune dans le tableau ci-dessous sont ceux recommandés, mais la variante ASCII (affichée sur fond blanc dans la même ligne, notamment dans la colonne US) est souvent utilisée à la place (quand ils sont utilisés isolément). C’est le cas particulièrement pour les caractères dits invariants de l’ISO 646, c’est-à-dire les 26 lettres latines basiques (majuscules ou minuscules), les 10 chiffres arabo-européens et les 20 symboles ou ponctuations suivants:
! " % & ' ( ) * + , - . / : ; < = > ? _
qui ne sont pas modifiés dans les jeux de caractères totalement compatibles avec l’ISO 646 (mais peuvent avoir des variantes graphiques plus proches d’autres caractères considérés comme distincts dans ISO/IEC 10646 et Unicode).
Aussi, parmi les 94 positions graphiques de l’ISO 646 (codées de 33 à 126 en décimal), seules 12 positions sont dites variantes et correspondent aux caractères graphiques suivants de la variante américaine de l’ISO 646 (alias ASCII) :
# $ @ [ \ ] ^ ` { | } ~
Les changements spécifiques à certaines de ces variantes sont indiqués dans la table suivante avec un fond coloré jaune ou bleu quand le caractère assigné au code est différent de celui assigné dans l’ASCII (US) ; les cellules vides sur fond gris indiquent des positions invalides non utilisées dans le jeu de caractères normalisé correspondant :
Codes | Caractères pour chaque jeu compatible ISO 646 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
binaire | déc. | hexa | INV | T.61 | JA-O | JA | KR | CN | US | IRV | GB | FR | FR-0 | CA-1 | CA-2 | ita | por | PT | DK | NO | NO-2 | SE | SE-C | DE | HU | IE | esp | ES | CU | MT | YU |
010 0010 | 34 | 22 | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " |
010 0011 | 35 | 23 | # | # | # | # | # | # | # | £ | £ | £ | # | # | £ | # | £ | # | # | § | # | # | # | # | £ | # | # | # | # | # | |
010 0100 | 36 | 24 | ¤ | $ | $ | $ | ¥ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | ¤ | ¤ | $ | ¤ | $ | $ | $ | ¤ | $ | $ | |
010 1001 | 39 | 27 | ' | ' | ' | ' | ' | ' | ' | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ |
010 1100 | 44 | 2C | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , |
010 1101 | 45 | 2D | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
010 1111 | 47 | 2F | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / |
100 0000 | 64 | 40 | @ | @ | @ | @ | @ | @ | @ | @ | à | à | à | à | § | § | ´ | @ | @ | @ | @ | É | § | Á | Ó | § | • | @ | @ | Ž | |
101 1011 | 91 | 5B | [ | [ | [ | [ | [ | [ | [ | [ | ° | ° | â | â | ° | Ã | Ã | Æ | Æ | Æ | Ä | Ä | Ä | É | É | ¡ | ¡ | ¡ | g | Š | |
101 1100 | 92 | 5C | ¥ | ¥ | ₩ | \ | \ | \ | \ | ç | ç | ç | ç | ç | Ç | Ç | Ø | Ø | Ø | Ö | Ö | Ö | Ö | Í | Ñ | Ñ | Ñ | z | Ð | ||
101 1101 | 93 | 5D | ] | ] | ] | ] | ] | ] | ] | ] | § | § | ê | ê | é | Õ | Õ | Å | Å | Å | Å | Å | Ü | Ü | Ú | ¿ | Ç | ] | h | C | |
101 1110 | 94 | 5E | ^ | ^ | ^ | ^ | ^ | ˆ | ˆ | ^ | ˆ | î | É | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | Ü | ˆ | ˆ | Á | ˆ | ¿ | ¿ | ˆ | C | ||
101 1111 | 95 | 5F | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ |
110 0000 | 96 | 60 | ` | ` | ` | ` | ` | ` | µ | µ | ô | ô | ù | ` | ` | ` | ` | ` | ` | é | ` | á | ó | ` | ` | ` | c | ž | |||
111 1011 | 123 | 7B | { | { | { | { | { | { | { | é | é | é | é | à | ã | ã | æ | æ | æ | ä | ä | ä | é | é | ° | ´ | ´ | G | š | ||
111 1100 | 124 | 7C | | | | | | | | | | | | | | | | | ù | ù | ù | ù | ò | ç | ç | ø | ø | ø | ö | ö | ö | ö | í | ñ | ñ | ñ | Z | d | |
111 1101 | 125 | 7D | } | } | } | } | } | } | } | è | è | è | è | è | õ | õ | å | å | å | å | å | ü | ü | ú | ç | ç | [ | H | c | ||
111 1110 | 126 | 7E | ¯ | ¯ | ~ | ~ | ˜ | ˜ | ¨ | ¨ | û | û | ì | ° | ˜ | ˜ | ¯ | | | ˜ | ü | ß | ˝ | á | ˜ | ¨ | ¨ | C | c |
Les caractères affichés ci-dessus sur fond jaune doivent être interprétés comme des diacritiques combinants lorsqu’ils sont précédés ou suivis d’un caractère de contrôle retour arrière (BS, code 8). Ces diacritiques s’appliquent alors au caractère précédent si ces caractères réinterprétés sont précédés du contrôle retour arrière, sinon ils s’appliquent au caractère suivant comme s’ils étaient saisis comme touches mortes (et dans ce cas le transcodage vers Unicode nécessitera une inversion du caractère suivant et du diacritique) ; on peut aussi coder la combinaison du caractère de base et du diacritique avec un caractère Unicode précombiné (en forme normale C) correspondant à cette combinaison, si elle est codée dans Unicode. Dans ce cas, les ponctuations, symboles et lettres modificatives suivants sont réinterprétés ainsi :
ISO 646 | Interprétation isolée | Interprétation avec BS et un autre caractère (ici « o ») | ||||
---|---|---|---|---|---|---|
hexa | Caractère | Unicode | Nom | Caractère | Unicode | Nom |
0x22 | "
|
U+0022 | guillemet anglais | ö
|
U+0308 | diacritique tréma (ou diérèse ou umlaut) |
0x27 | ´
|
U+00B4 | accent aigu | ó
|
U+0301 | diacritique accent aigu (ou oxeia en grec) |
0x2C | ,
|
U+002C | virgule | o̦
|
U+0326 | diacritique virgule souscrite (en roumain) |
o̧
|
U+0327 | diacritique cédille (sauf en en roumain) | ||||
0x2D | -
|
U+002D | tiret-moins | o̵
|
U+0335 | diacritique barre courte couvrante |
0x2F | /
|
U+002F | barre oblique | o̷
|
U+0337 | diacritique barre oblique courte couvrante (avec une minuscule) |
o̸
|
U+0338 | diacritique barre oblique longue couvrante (avec une majuscule) | ||||
0x5B | °
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef |
0x5E | ^
|
U+02C6 | lettre modificative accent circonflexe (avec chasse) | ô
|
U+0302 | diacritique accent circonflexe |
0x5F | _
|
U+005F | tiret bas | o̱
|
U+0331 | diacritique macron souscrit |
0x60 | `
|
U+0060 | accent grave (avec chasse) | ò
|
U+0300 | diacritique accent grave |
0x7B | °
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef |
´
|
U+00B4 | accent aigu | ó
|
U+0301 | diacritique accent aigu (ou oxeia en grec) | |
0x7E | ¨
|
U+00A8 | tréma (avec chasse) | ö
|
U+0308 | diacritique tréma (ou diérèse ou umlaut) |
°
|
U+00B0 | symbole degré | o̊
|
U+030A | diacritique rond en chef | |
ˉ
|
U+02C9 | lettre modificative macron (avec chasse) | ō
|
U+0304 | diacritique macron | |
˜
|
U+02DC | petit tilde (avec chasse) | õ
|
U+0303 | diacritique tilde | |
˝
|
U+02DD | double accent aigu (avec chasse) | ő
|
U+030B | diacritique double accent aigu |
Notes et références
[modifier | modifier le wikicode]- ↑ http://www.ecma-international.org/publications/standards/Ecma-006.htm Standard ECMA-6 7-bit Coded Character Set 6th edition (December 1991) http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-006.pdf