# ISO/CEI 2022

ISO 2022, ou plus formellement ISO/CEI 2022 (ICS n$^o$ 35.040), est une norme ISO spécifiant une technique pour inclure de multiples jeux de caractères (cyrillique, chinois, diacritique de l'alphabet latin...etc.) dans un seul codage de caractères.
L'ISO-2022 est équivalent de l'ECMA 35.
Elle traite de Structure de code de caractère et techniques d'extension ; son appellation anglophone est Information technology—Character code structure and extension techniques.
À la différence du codage de caractères ISO/CEI 8859 qui utilise 8 bits pour tous les caractères, les codages ISO 2022 sont de tailles variables en utilisant typiquement 8 ou 16 bits par caractère. Un grand nombre de codages de caractères utilise les mécanismes spécifiés dans l'ISO 2022. Par exemple, l'ISO-2022-JP est largement utilisé comme codage de caractères pour le japonais.
Elle permet de présenter des textes comme 「日本語版Wikipedia」.

## Introduction

Beaucoup de langues ou de familles de langues ne s'écrivent pas avec l'alphabet latin, telles le grec, le russe, l'arabe, et l'hébreu, qui historiquement étaient représentées sur les ordinateurs avec un jeu de caractères ASCII étendu de 8 bits et incluant la famille du jeu de caractères de l'ISO/CEI 8859. Les langues écrites de l'Asie de l'Est, et spécifiquement, le chinois, le japonais et le coréen, utilisent nettement plus de caractères que ne peut représenter un octet. C'est pourquoi, afin de représenter ces nombreux caractères, un codage spécifique composé de deux octets a d'abord été utilisé .
L'ISO 2022 avait développé une technique pour représenter les caractères de multiples systèmes de caractères à travers un unique système de codage. Les caractères ISO 2022 incorporent des séquences d'échappement qui indiquent le jeu à utiliser pour le caractère qui suit. Les séquences d'échappement sont enregistrées dans l'ISO et sont souvent codées par une chaîne de trois caractères utilisant le caractère ASCII ECHAP (hexadécimal : 1B, octal : 33). Ces codages de caractères requièrent que les données soient lues séquentiellement afin de parvenir à une interprétation correcte des diverses séquences d'échappement.
Même si le jeu de caractères ISO 2022, et particulièrement, ISO-2022-JP, est encore énormément utilisé, les logiciels modernes utilisent aujourd'hui des codages de caractères de type Unicode tel que l'UTF-8.

## Jeux de caractères ISO 2022
### Séquences d'échappement

Les codages de caractères utilisant les mécanismes ISO 2022 incluent :
* ISO-2022-JP, largement utilisé dans le codage du japonais. Commence par des caractères ASCII et inclut les séquences d'échappements suivantes :
** ESC $ @ pour utiliser le codage JIS X 0208-1978 (2 octets par caractère)
** ESC $ B pour utiliser le codage JIS X 0208-1983 (2 octets par caractère)
** ESC ( B pour utiliser le code ASCII (1 octet par caractère)
** ESC ( J pour utiliser le codage JIS X 0201-1976 (1 octet par caractère)
* ISO-2022-JP-1, identique à ISO-2022-JP avec une séquence d'échappement supplémentaire :
** ESC $ ( D pour utiliser le codage JIS X 0212-1990 (2 octets par caractère)
* ISO-2022-JP-2, extension multilingue de l'ISO-2022-JP, identique à l'ISO-2022-JP-1 avec les séquences d'échappement supplémentaires suivantes :
** ESC $ ( C pour utiliser le codage KSC 5601-1987 pour les caractères les plus courants de l'écriture coréenne (2 octets par caractère)
** ESC $ A pour utiliser le codage GB 2312-1980 pour les caractères les plus courants de l'écriture chinoise simplifiée (2 octets par caractère)
** ESC . A pour utiliser le codage ISO/CEI 8859-1 pour les caractères occidentaux les plus courants de l'écriture latine (1 octet par caractère)
** ESC . B pour utiliser le codage ISO/CEI 8859-7 pour les caractères les plus courants de l'écriture grecque (1 octet par caractère)
* ISO-2022-JP-3, extension de l'ISO-2022-JP pour le japonais
* ISO-2022-KR, utilisé dans le codage du coréen
* ISO-2022-CN, utilisé dans le codage du chinois (tombé en désuétude en république populaire de Chine, remplacé par le standard GB 18030 imposé mais devenu interopérable avec Unicode et ISO/CEI 10646)
* ISO-2022-CN-EXT, extension ISO-2022-CN pour le chinois (tombé en désuétude en république populaire de Chine, remplacé par standard GB 18030 imposé mais devenu interopérable avec Unicode et ISO/CEI 10646)

## Dates et versions

#表1に、各版ごとの規格番号、制定日などを示す。
Modèle:Visible anchor ISO/IEC 2022 の各版ごとの規格番号・制定日等 :
| Version | Référence ISO | date ISO | Référence JIS | date JIS |
| 1 | ISO 2022:1973 | Promulgué le 1973年5月 | JIS C 6228:1975 | Promulgué le 1975年3月1日 |
| 2 | ISO 2022:1982 | 1982年12月 | JIS C 6228:1984※ | 1984年11月1日 |
| 3 | ISO 2022:1986 | 1986年5月 | JIS X 0202:1991 | 1991年1月1日 |
| 4 | ISO/IEC 2022:1994 | 1994年12月 | JIS X 0202:1998 | 1998年1月20日 |
    ※ Le 1987年3月1日, cette révision a été renommée JIS X 0202:1984.

## Structure du codage en octets

(a) avec des codets à 7 bits :
| fort ╲ faible | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
| 00 | | | | | | | | | | |
| 01 | | | | | | | | | | |
| 02 | | | | | | | | | | |
| 03 | | | | | | | | | | |
| 04 | | | | | | | | | | |
| 05 | | | | | | | | | | |
| 06 | | | | | | | | | | |
| 07 | C0 | C0 | GL | GL | GL | GL | GL | GL | C1 | C1 |
| 08 | C0 | C0 | GL | GL | GL | GL | GL | GL | C1 | C1 |
| 09 | | | | | | | | | | |
| 10 | | | | | | | | | | |
| 11 | | | | | | | | | | |
| 12 | | | | | | | | | | |
| 13 | | | | | | | | | | |
| 14 | | | | | | | | | | |
| 15 | | | | | | | | | | |
(b) avec des codets à 8 bits :
| fort ╲ faible | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |
| 00 | | | | | | | | | | | | | | | | |
| 01 | | | | | | | | | | | | | | | | |
| 02 | | | | | | | | | | | | | | | | |
| 03 | | | | | | | | | | | | | | | | |
| 04 | | | | | | | | | | | | | | | | |
| 05 | | | | | | | | | | | | | | | | |
| 06 | | | | | | | | | | | | | | | | |
| 07 | C0 | C0 | GL | GL | GL | GL | GL | GL | C1 | C1 | GR | GR | GR | GR | GR | GR |
| 08 | C0 | C0 | GL | GL | GL | GL | GL | GL | C1 | C1 | GR | GR | GR | GR | GR | GR |
| 09 | | | | | | | | | | | | | | | | |
| 10 | | | | | | | | | | | | | | | | |
| 11 | | | | | | | | | | | | | | | | |
| 12 | | | | | | | | | | | | | | | | |
| 13 | | | | | | | | | | | | | | | | |
| 14 | | | | | | | | | | | | | | | | |
| 15 | | | | | | | | | | | | | | | | |
La position dans la table de caractères ci-dessous est conventionnellement notée par l'ISO avec deux entiers décimaux : le numéro de colonne suivi du numéro de ligne. Par exemple, 01/11 est une valeur hexadécimale correspondant au code hexadécimal 1B (ou 27 en décimal) affecté au caractère de contrôle ESCAPE (échappement).
* $^a$ ESCAPE (échappement) est toujours un caractère de contrôle.
* $^b$ Avec un jeu de 94 caractères, c'est un caractère SPACE (espace).
* $^c$ Avec un jeu de 94 caractères, c'est un caractère de contrôle DELETE (bourrage).
* $^d$ Dans le codage sur 7 bits, les caractères de contrôle C1 ne se codent pas directement : cette alternative est représentée par des séquences d'échappement utilisant 2 codets de 7 bits (le caractère de contrôle ESCAPE suivi d'un codet pris dans les colonnes 04 ou 05). Quant aux caractères des jeux GR et GL de la variante linguistique actuelle (sélectionnée aussi bien porule codagte sur 7 bits que sur 8 bits par une des séquences d'échappement ISO 2022), ils sont codés soit en utilisant un caractère de contrôle C0 permettant de sélectionner la table utilisée pour les codets simples suivants pris dans les colonnes 02 à 07, ou bien avec une séquence de deux codets (un caractère de contrôle C0 de décalage suivi d'un codet pris dans les colonnes 02 à 07) qui permet d'échanger temporairement les deux tables.
* e Seulement pour un jeu GR de 96 caractères ; avec un jeu GR de 94 caractères, les deux codes extrêmes de la matrice GR ne s'utilisent pas.

## Exemple en ISO-2022-JP

À titre d'exemple, la table [3] ci-dessous décrit le codage de la chaîne 「日本語版Wikipedia」 (Wikipedia version japonaise) avec la convention ISO-2022-JP.
La première ligne indique chaque caractère. La ligne intermédiaire indique le numéro associé à chaque caractère ou le changement de codage. La dernière ligne indique chaque octet, sous forme ASCII en bas, et hexadécimal codé décimal en partie supérieure.
Illustration: 「日本語版Wikipedia」codé en ISO-2022-JP :
| Caractères représentés | JIS X 0208 を指示 | JIS X 0208 を指示 | JIS X 0208 を指示 | 日 | 日 | 本 | 本 | 語 | 語 | 版 | 版 | ASCII を指示 | ASCII を指示 | ASCII を指示 | W | i | k | i | p | e | d | i | a |
| Octets ISO-2022-JP | JIS X 0208 を指示 | JIS X 0208 を指示 | JIS X 0208 を指示 | 38 | 92 | 43 | 60 | 24 | 76 | 40 | 39 | ASCII を指示 | ASCII を指示 | ASCII を指示 | 87 | 105 | 107 | 105 | 112 | 101 | 100 | 105 | 97 |
| Octets ISO-2022-JP | 01/11 | 02/04 | 04/02 | 04/06 | 07/12 | 04/11 | 05/12 | 03/08 | 06/12 | 04/08 | 04/07 | 01/11 | 02/08 | 04/02 | 05/07 | 06/09 | 06/11 | 06/09 | 07/00 | 06/05 | 06/04 | 06/09 | 06/01 |
| (US-ASCII) | ESC | $ | B | F | | | K | \ | 8 | l | H | G | ESC | ( | B | W | i | k | i | p | e | d | i | a |

## Note

Il se peut que la première séquence d'échappement ne soit pas nécessaire lorsque le texte commence par l'un des 96 caractères du standard américain (US ASCII), ou bien le plus souvent l'un des caractères du jeu (plus réduit) de référence invariant (ou IRV) dans la norme ISO/CEI 646.