Developpez.com - C
X

Choisissez d'abord la catégorieensuite la rubrique :

next up previous contents index
Next: Les codes ISO-Latin-1 Up: Les jeux de caractères Previous: Les normes

Sous-sections

Le code ascii

Le jeu de caractères est formé d'un ensemble de caractères de commandes et de caractères graphiques. L'ensemble des caractères de commande est formé de six familles :
$\bullet$
commandes de format
commande nom
carriage return CR
line feed LF
backspace BS
horizontal tabulation HT
vertical tabulation VT
space SP
form feed FF
Le nom carriage return arrive tout droit de l'époque des machines à écrire, où la position d'écriture était fixe et où le papier était porté sur un chariot (carriage) mobile. Le caractère carriage return est la commande permettant de mettre la position d'écriture en début de ligne, sans changer de ligne. Le caractère line feed met la position d'écriture sur la ligne suivante, sans aller en début de ligne. Pour obtenir l'effet de << passage à la ligne >> , il faut donc un caractère carriage return suivi d'un caractère line feed (ou l'inverse). Dans le système UNIX, le caractère choisi par convention comme signifiant << passage à la ligne >> est le caractère line feed, et c'est à la charge des pilotes de périphériques de remplacer ce caractère logique par la suite de caractères nécessaires pour obtenir un passage à la ligne suivante. Prenons le cas d'un pilote de terminal écran clavier :
-
en entrée : la convention habituelle est de faire un passage à la ligne an appuyant sur la touche carriage return. Le pilote de terminal :
1.
envoie au programme qui réalise la lecture un line feed.
2.
envoie à l'écran (en tant qu'écho de ce carriage return) la séquence line feed suivi de carriage return.
-
en sortie : le pilote de terminal transforme les line feed en line feed suivi de carriage return

Par abus de langage, dans le monde C et/ou UNIX, on utilise souvent le terme de newline pour désigner en réalité line feed. Mais qu'il soit bien clair que la norme ANSI ne comporte pas de caractère appelé newline.

$\bullet$
commandes d'extension du code
commande nom
shift out SO
shift in SI
escape ESC

Le caractère escape a été largement utilisé par les concepteurs de terminaux écran-clavier et d'imprimantes pour augmenter le nombre de commandes. La technique consiste à définir des séquences d'échappement formées du caractère escape suivi d'un certains nombre de caractères ordinaires qui perdent leur signification habituelle. Voici quelques séquences d'échappement du terminal écran-clavier VT100 :

séquence sémantique
escape [2A monter le curseur de 2 lignes
escape [4B descendre le curseur de 4 lignes
escape [3C décaler le curseur de 3 positions vers la droite
escape [1D décaler le curseur de 1 position vers la gauche

$\bullet$
commande de séparation
commande nom
file separator FS
group separator GS
record separator RS
unit separator US
end of medium EM

Ces caractères ont pour but de séparer les différentes unités d'information sur bandes magnétiques. Ils sont obsolètes de nos jours, les programmes d'archivage (tar, cpio) utilisant leur propre format sans faire appel à ces caractères.

$\bullet$
commandes pour la communication synchrone
commande nom
start of header SOH
start of text STX
end of text ETX
end of transmission EOT
end of transmitted block ETB
enquiry ENQ
positive acknowledge ACK
negative acknowledge NAK
synchronisation SYN
data link escape DLE
null NUL

Les 10 premières commandes ont été crées pour construire des trames de communication entre machines reliées par des lignes synchrones. Elles sont complètement obsolètes de nos jours, où les communications se font grâce à des réseaux dont les trames n'utilisent pas ces caractères.

La dernière commande null était utile à l'époque des téléimprimeurs dont le temps de retour du chariot était plus grand que le temps d'impression d'un caractère quelconque. Après avoir envoyé un carriage return, il fallait envoyer plusieurs null (en fonction de la vitesse de la ligne) pour être sûr que le chariot était bien revenu en début de ligne !

$\bullet$
commandes de périphérique
commande nom
device control 1 DC1
device control 2 DC2
device control 3 DC3
device control 4 DC4

Ces caractères ont été prévus pour donner des ordres spécifiques à certains périphériques. A l'époque des téléimprimeurs, ceux-ci possédaient un lecteur-perforateur de ruban papier. Les codes device control étaient utilisés pour commander ce lecteur-perforateur.

De nos jours device control 3 et device control 1 sont utilisés sous les noms respectifs de XON et XOFF pour réaliser du contrôle de flux. Les caractères device control 3 et device control 1 sont affectés aux touches Control-q et Control-s du clavier. Lorsqu'un pilote de terminal écran-clavier gère le contrôle de flux, l'utilisateur peut taper Control-s pour faire stopper une sortie trop rapide (pour se donner le temps de la lire sur l'écran), et la faire continuer en tapant Control-q.

$\bullet$
commandes diverses
commande nom
cancel CAN
substitute SUB
delete DEL
bell BEL

Il y a deux caractères qui sont utilisés couramment pour réaliser la fonction d'effacement du caractère (erroné) précédent : back space et delete. En fonction du caractère qui est le plus facile à taper sur son clavier, l'utilisateur désirera choisir l'un ou l'autre. Le caractère back space peut sur tout clavier s'obtenir par Control-h, alors qu'il n'y a pas de Control-quelque-chose correspondant au caractère delete. Selon les claviers, il peut y avoir une touche marquée back space, et/ou une touche marquée delete, ou une touche marquée $\leftarrow$ qui génère back space ou delete, et qui peut, ou ne peut pas, être configurée par le set-up du terminal pour générer au choix back space ou delete !

Un utilisateur UNIX utilise la commande stty pour indiquer au système d'exploitation le caractère qu'il désire pour réaliser la fonction d'effacement de caractère.

Les codes ascii en octal

code 0 1 2 3 4 5 6 7
000 NUL SOH STX ETX EOT ENQ ACK BEL
010 BS HT LF VT NP CR SO SI
020 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
030 CAN EM SUB ESC FS GS RS US
040 SP ! " # $ % & '
050 ( ) * + , - . /
060 0 1 2 3 4 5 6 7
070 8 9 : ; < = > ?
100 @ A B C D E F G
110 H I J K L M N O
120 P Q R S T U V W
130 X Y Z [ \ ] ^ _
140 ` a b c d e f g
150 h i j k l m n o
160 p q r s t u v w
170 x y z { | } ~ DEL

Les codes ascii en hexadécimal

code 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT NP CR SO SI
0x10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
0x20 SP ! " # $ % & ' ( ) * + , - . /
0x30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
0x40 @ A B C D E F G H I J K L M N O
0x50 P Q R S T U V W X Y Z [ \ ] ^ _
0x60 ` a b c d e f g h i j k l m n o
0x70 p q r s t u v w x y z { | } ~ DEL

Les codes ascii en décimal




code 0 1 2 3 4 5 6 7 8 9
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT
10 LF VT NP CR SO SI DLE DC1 DC2 DC3
20 DC4 NAK SYN ETB CAN EM SUB ESC FS GS
30 RS US SP ! " # $ % & '
40 ( ) * + , - . / 0 1
50 2 3 4 5 6 7 8 9 : ;
60 < = > ? @ A B C D E
70 F G H I J K L M N O
80 P Q R S T U V W X Y
90 Z [ \ ] ^ _ ` a b c
100 d e f g h i j k l m
110 n o p q r s t u v w
120 x y z { | } ~ DEL    


next up previous contents index
Next: Les codes ISO-Latin-1 Up: Les jeux de caractères Previous: Les normes
Bernard Cassagne
1998-12-09
Contacter le responsable de la rubrique C