ISO 2022, ou plus formellementISO/CEI 2022 (ICSno 35.040), est une normeISO spécifiant une technique pour inclure de multiples jeux decaractères (cyrillique,chinois,diacritique de l'alphabet latin...etc.) dans un seulcodage de caractères.
L'ISO-2022 est équivalent de l'ECMA 35[1].
Elle traite deStructure de code de caractère et techniques d'extension ; son appellation anglophone estInformation technology—Character code structure and extension techniques.
À la différence du codage de caractèresISO/CEI 8859 qui utilise 8bits 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 lejaponais.
Elle permet de présenter des textes comme 「日本語版Wikipedia」.
Beaucoup de langues ou defamilles de langues ne s'écrivent pas avec l'alphabet latin, telles legrec, lerusse, l'arabe, et l'hébreu, qui historiquement étaient représentées sur les ordinateurs avec un jeu de caractèresASCII étendu de 8bits 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, lechinois, lejaponais et lecoréen, utilisent nettement plus de caractères que ne peut représenter unoctet. 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 dessé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èreASCII 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 typeUnicode tel que l'UTF-8.
Les codages de caractères utilisant les mécanismes ISO 2022 incluent :
ESC $ @
pour utiliser le codageJIS X 0208-1978 (2 octets par caractère)ESC $ B
pour utiliser le codageJIS 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 codageJIS X 0201-1976 (1 octet par caractère)ESC $ ( D
pour utiliser le codageJIS X 0212-1990 (2 octets par caractère)ESC $ ( C
pour utiliser le codageKSC 5601-1987 pour les caractères les plus courants de l'écriture coréenne (2 octets par caractère)ESC $ A
pour utiliser le codageGB 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 codageISO/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 codageISO/CEI 8859-7 pour les caractères les plus courants de l'écriture grecque (1 octet par caractère)#表1に、各版ごとの規格番号、制定日などを示す。
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日 |
|
|
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).
À titre d'exemple, la table [3] ci-dessous décrit le codage de la chaîne 「日本語版Wikipedia」 (Wikipedia version japonaise) avec la conventionISO-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.
Caractères représentés | JIS X 0208 を指示 | 日 | 本 | 語 | 版 | ASCII を指示 | W | i | k | i | p | e | d | i | a | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octets ISO-2022-JP | 38 | 92 | 43 | 60 | 24 | 76 | 40 | 39 | 87 | 105 | 107 | 105 | 112 | 101 | 100 | 105 | 97 | ||||||
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 |
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 normeISO/CEI 646.
Jeux de caractères codés | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Multi-octets |
| ![]() | |||||||||||
8 bits |
| ||||||||||||
7 bits |
| ||||||||||||
Moins de 7 bits | |||||||||||||