Article de reference

Codes de contrôle C0 et C1

Les codes de contrôle ou jeux de caractères de contrôle C0 et C1 définissent les codes de contrôle à utiliser dans le texte par les systèmes informatiques qui utilisent l'ASCII ...

Les codes de contrôle ou jeux de caractères de contrôle C0 et C1 définissent les codes de contrôle à utiliser dans le texte par les systèmes informatiques qui utilisent l'ASCII et ses dérivés. Les codes représentent des informations supplémentaires sur le texte, telles que la position d'un curseur, une instruction de démarrage d'une nouvelle ligne ou un message indiquant que le texte a été reçu.

Les codes C0 sont compris entre 00 HEX et 1F HEX et le jeu C0 par défaut a été défini à l'origine dans la norme ISO 646 ( ASCII ). Les codes C1 sont compris entre 80 HEX et 9F HEX et le jeu C1 par défaut a été défini à l'origine dans la norme ECMA-48 (harmonisée ultérieurement avec la norme ISO 6429). Le système ISO/IEC 2022 de spécification des caractères de contrôle et graphiques permet d'utiliser d'autres jeux C0 et C1 pour des applications spécialisées, mais ils sont rarement utilisés.

Contrôles C0

L'ASCII définit 32 caractères de contrôle, plus un caractère supplémentaire nécessaire pour le caractère DEL, 7F HEX ou 01111111 BIN (nécessaire pour percer tous les trous sur une bande de papier et l'effacer).

Ce grand nombre de codes était souhaitable à l'époque, car les contrôles multi-octets nécessitaient l'implémentation d'une machine à états dans le terminal, ce qui était très difficile avec l'électronique contemporaine et les terminaux mécaniques.

Seuls quelques codes ont conservé leur utilisation : BEL, ESC et les caractères effecteurs de format (FE n ) BS, TAB, LF, VT, FF et CR. D'autres ne sont pas utilisés ou ont acquis des significations différentes, comme NUL qui est le terminateur de chaîne C. Certains protocoles de transfert de données tels que ANPA-1312 , Kermit et XMODEM font un usage intensif de SOH, STX, ETX, EOT, ACK, NAK et SYN à des fins d'approximation de leurs définitions originales ; et certains formats de fichiers utilisent les « séparateurs d'informations » (IS n ) tels que le format info Unix et la méthode de chaîne splitlines de Python .

Les noms de certains codes ont été modifiés dans la norme ISO 6429:1992 (ou ECMA-48:1991) pour être neutres par rapport au sens d'écriture. Les abréviations utilisées n'ont pas été modifiées, car la norme avait déjà spécifié qu'elles resteraient inchangées lors de la traduction de la norme dans d'autres langues. Dans ce tableau, les noms nouveaux et anciens sont indiqués pour les commandes renommées (l'ancien nom est celui qui correspond à l'abréviation).

Unicode fournit des images de contrôle qui peuvent remplacer les caractères de contrôle C0 pour les rendre visibles à l'écran. Cependant, la notation caret est utilisée plus souvent.

Contrôles C1

En 1973, les normes ECMA-35 et ISO 2022 ont tenté de définir une méthode permettant de convertir un code « ASCII étendu » de 8 bits en un code correspondant de 7 bits, et vice versa . Dans un environnement à 7 bits, le Shift Out ( SO ) modifierait la signification des 96 octets 0x20 à 0x7F (c'est-à-dire tous les codes de contrôle sauf C0), pour qu'ils soient les caractères qu'un environnement à 8 bits imprimerait s'il utilisait le même code avec le bit le plus élevé défini. Cela signifiait que la plage 0x80 à 0x9F ne pouvait pas être imprimée dans un environnement à 7 bits, il a donc été décidé qu'aucun autre jeu de caractères ne pouvait les utiliser, et que ces codes devaient être des codes de contrôle supplémentaires, qui sont devenus connus sous le nom de codes de contrôle C1 . Pour permettre à un environnement à 7 bits d'utiliser ces nouveaux contrôles, les séquences à travers devaient être considérées comme équivalentes. Les normes ISO 8859 ultérieures ont abandonné la prise en charge des codes à 7 bits, mais ont conservé cette gamme de caractères de contrôle. ESC @ESC _

Le premier ensemble de codes de contrôle C1 à être enregistré pour une utilisation avec la norme ISO 2022 était DIN 31626 , un ensemble spécialisé à usage bibliographique qui a été enregistré en 1979.

L'ensemble de normes ISO/IEC 6429, plus couramment utilisé, a été enregistré en 1983, bien que la spécification ECMA-48 sur laquelle il était basé ait été publiée pour la première fois en 1976 et JIS X 0211 (anciennement JIS C 6323). Les noms symboliques définis par la RFC 1345 et les premières versions de l'ISO 10646, mais pas dans l'ISO/IEC 6429 ( PAD , HOP et SGC ), sont également utilisés.

À l'exception de SS2 et SS3 dans le texte EUC-JP et de NEL dans le texte transcodé à partir d' EBCDIC , les formes 8 bits de ces codes n'ont presque jamais été utilisées. CSI , DCS et OSC sont utilisés pour contrôler les terminaux texte et les émulateurs de terminaux , mais presque toujours en utilisant leurs représentations de code d'échappement 7 bits. De nos jours, si ces codes sont rencontrés, il est beaucoup plus probable qu'ils soient destinés à imprimer des caractères à partir de cette position de Windows-1252 ou de Mac OS Roman .

À l'exception de NEL, Unicode ne fournit pas d'« image de contrôle » pour aucun de ces éléments. Il n'existe pas non plus de variante bien connue de la notation Caret pour ces éléments.

Autres ensembles de codes de contrôle

Le mécanisme d'extension ISO/IEC 2022 (ECMA-35) permettait aux séquences d'échappement de modifier les jeux C0 et C1. Le jeu de caractères de contrôle standard C0 illustré ci-dessus est choisi avec la séquence ESC ! @et le jeu C1 ci-dessus est choisi avec la séquence ESC " C.

Plusieurs alternatives officielles et non officielles ont été définies, mais cela est pratiquement obsolète. La plupart ont été forcées de conserver une bonne compatibilité avec les contrôles ASCII pour l'interopérabilité. La norme fait des caractères codés « fixes » ESC, SP et DEL , qui sont disponibles dans leurs emplacements ASCII dans tous les codages conformes à la norme. Elle spécifie également que si un ensemble C0 comprenait des codes de contrôle de transmission (TC n ), ils doivent être codés à leurs emplacements ASCII et ne peuvent pas être placés dans un ensemble C1, et tout nouveau contrôle de transmission doit être dans un ensemble C1.

Autres ensembles de codes de contrôle C0

Jeux de caractères C1 de remplacement

Unicode

Unicode réserve les 65 points de code décrits ci-dessus pour la compatibilité avec les codes de contrôle C0 et C1, leur attribuant la catégorie générale Cc (contrôle). Il s'agit de :

Unicode ne spécifie la sémantique que pour les contrôles de format C0 HT, LF, VT, FF et CR (notez que BS est manquant) ; les séparateurs d'informations C0 FS, GS, RS, US (et SP) ; et le contrôle C1 NEL. Le reste des codes est transparent pour Unicode et leurs significations sont laissées aux protocoles de niveau supérieur, avec ISO/IEC 6429 suggéré comme valeur par défaut.

Unicode inclut de nombreux caractères effecteurs de format supplémentaires en plus de ceux-ci, tels que les marques, les incorporations, les isolats et les pops pour un formatage bidirectionnel explicite, ainsi que le joiner et le non-joiner de largeur nulle pour contrôler l'utilisation des ligatures. Cependant, ceux-ci sont classés dans la catégorie générale (format) plutôt que dans la catégorie . CfCc