ISO/CEI 646

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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 code]

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 code]

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 (lettre) 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 code]

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 niveau 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 niveau 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 code]

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 code]

Articles connexes[modifier | modifier le code]

  • ASCII
  • ISO 2022 Structure des codes de caractères et techniques d'extension Information technology—Character code structure and extension techniques
  • ISO/CEI 10646
  • Unicode

Liens externes[modifier | modifier le code]