Caractère nul
Le caractère nul (en anglais, null character, null terminator ou null byte, abrégé en NUL or NULL) est un caractère de contrôle avec la valeur zéro[1],[2],[3],[4].
Il est présent dans de nombreux jeux de caractères, notamment ISO/CEI 646 (ou ASCII), C0 and C1 control codes (en), ISO/CEI 10646 (Unicode) et EBCDIC. Il est aussi disponible dans presque tous les langages de programmation traditionnels[5].
Ce caractère existe déjà dans le Code Baudot sans pouvoir être utilisé, l'absence de signal ne permettant pas de porter de l'information.
La signification originale de ce caractère ressemblait à l'instruction nulle : lorsqu’il est envoyé à une imprimante ou à un terminal, il ne fait rien (certains terminaux l’affichent toutefois à tort comme un espace). Lorsque les téléscripteurs électromécaniques étaient utilisés comme périphériques de sortie informatiques, un ou plusieurs caractères nuls étaient envoyés à la fin de chaque ligne pour laisser le temps au mécanisme de revenir à la première position d'impression sur la ligne suivante. Sur une bande perforée, le caractère nul est représenté par une absence de perforations. Ainsi, une nouvelle bande non perforée est remplie avec des caractères nuls. Un texte peut souvent être inséré dans un espace réservé par des caractères nuls en perforant les nouveaux caractères sur les caractères nuls.
Aujourd'hui, le caractère a beaucoup d'importance dans le langage C et ses dérivés et dans de nombreux formats de données où il sert de caractère réservé utilisé pour signifier la fin d'une chaîne de caractères[6], souvent appelée une null-terminated string (en)[7]. Cela permet à la chaîne d'être de n'importe quelle longueur avec une surcharge d'un seul octet, l'alternative consistant à stocker un compte de caractères ce qui impose une limite de longueur de chaîne de 255 pour un compteur d'un octet ou une surcharge de plus d'un octet.
Codage
Dans tous les jeux de caractères modernes, le caractère nul a une valeur de zéro. Dans la plupart des codages, cela est implanté en une seule unité#non de code avec une valeur nulle. Par exemple, dans UTF-8, il s'agit d'un seul octet contenant 8 bits de valeur zéro. Toutefois, dans UTF-8 modifié, le caractère nul est codé sous forme de deux octets : 0xC0, 0x80. Cela permet à l’octet de valeur zéro, qui n’est maintenant utilisé pour aucun caractère, d’être utilisé comme indicateur de fin de chaîne de caractères.
Références
- Modèle:Cite IETF
- « The set of control characters of the ISO 646 » [archive du ] [PDF], Secretariat ISO/TC 97/SC 2, : « Position: 0/0, Name: Null, Abbreviation: Nul », p. 4.4
- « Unicode Character 'NULL' (U+0000) » (consulté le )
- « C0 Controls and Basic Latin », Unicode Consortium, (consulté le )
- "A byte with all bits set to 0, called the null character, shall exist in the basic execution character set; it is used to terminate a character string literal." — ANSI/ISO 9899:1990 (the ANSI C standard), section 5.2.1
- "A string is a contiguous sequence of characters terminated by and including the first null character" — ANSI/ISO 9899:1990 (the ANSI C standard), section 7.1.1
- Working Draft, Standard for Programming Language C++ (ISO 14882 standard working draft), ISO/IEC, , PDF (lire en ligne), p. 427
« A null-terminated byte string, or NTBS, is a character sequence whose highest-addressed element with defined content has the value zero (the terminating null character); no other element in the sequence has the value zero. »