# Caractère (informatique)

En informatique, un caractère est à la fois un type de donnée et une notion abstraite. Comme en typographie, un caractère informatique peut représenter une lettre minuscule, une lettre majuscule, un chiffre, un signe de ponctuation ; mais aussi un espace, une tabulation, un retour à la ligne et quelques autres opérations spéciales (sonnerie, effacement, etc.) qui ne représentent pas des symboles (caractères de contrôle).
En informatique, la notion de caractère est une notion qui dans le principe associe à un glyphe un nombre, de manière à dissocier la représentation physique du caractère de sa signification.

## Historique

Si le caractère existe depuis environ deux millénaires, sa représentation abstraite sous forme numérique est plus récente. Elle a notamment été développée pour le télégraphe. Cette abstraction permettant d'améliorer l'efficience des communications. L'émergence d'un codage unifié s'est cependant heurtée à des différences d'approche conventionnelles et culturelles du concept de caractère.

### Considérations techniques

Comme les ordinateurs fonctionnent en binaire, un numéro est attribué à chaque caractère. Ce nombre peut être codé avec des chiffres binaires (bits).
À la fin du XXe siècle, 8 bits (c'est-à-dire un octet) étaient assez habituelles et permettait de représenter 256 nombres, donc 256 caractères différents. Cette première limite à 256 nombres a conduit à des normes de codage de caractères.

### Normalisation et standardisation

Il existe plusieurs normes de codage de caractères dont, parmi les plus connues, ASCII, ISO/CEI 8859 et Unicode. Les normes diffèrent dans le jeu de caractères couverts, dans le code attribué à chaque caractère et dans la représentation binaire du code. Ainsi, le caractère € qui n'existe pas en ASCII a le nombre 164 en ISO 8859 et le nombre 8364 en Unicode. 7 bits suffisent pour coder tous les caractères de la norme ASCII, mais il en faut 8 (1 octet) pour ISO 8859, et plus de 16 (2 octets) pour Unicode. Il existe plusieurs représentations binaires différentes d'Unicode, dont UTF-8 et UTF-16 ; ainsi il faut 3 octets pour coder le 8364 de € en UTF-8, contre 2 octets en UTF-16.
Les différents nombres attribués ne permettent pas seulement d'identifier les caractères de certains alphabets, mais également les variantes liées aux accents, les chiffres, certains symboles, ainsi que des caractères non imprimables, comme les espaces, les tabulations et les retours à la ligne.
Une suite de caractères informatiques représente un texte brut, avec les espaces et les retours à la ligne, mais sans formatage plus élaboré tel que choix de polices de caractères, tailles ou couleurs de texte, etc. Les caractères spéciaux (comme l'astérisque et l'esperluette) étaient surtout utilisés comme codes de contrôle par le matériel informatique (terminaux et imprimantes) d'avant les années 1990 qui ne fonctionnait qu'en mode texte. Les caractères d'échappement permettaient de combiner plusieurs codages et étaient le principe de base de l'ISO/CEI 2022.

## Terminologie

La standard Unicode différencie les caractères abstraits et les caractères codés qui sont associés à des codes numériques pour faciliter leur représentation informatique.

## Police de caractères

L'affichage d'un caractère sur un moniteur d'ordinateur ou son impression avec une imprimante nécessite les données spécifiant le dessin exact du caractère, le glyphe. Le fichier numérique de caractères contenant la liste des codes renvoyant à des glyphes est une police de caractères.

## Type de données

Très souvent les ordinateurs traitent des mots, des phrases, des paragraphes entiers. Il existe un type de données pour représenter une suite de caractères, c'est la chaîne de caractères.
En fait on confond souvent l'unité de code (unité de 8, 16 ou 32 bits) codant une partie du caractère proprement dit et le caractère proprement dit. Cette confusion vient de l'influence de la norme ASCII et des anglophones qui confondaient le caractère et l'octet.

## Propriétés

Dans le cas d'Unicode, chaque caractère est doté de propriétés définies par la norme Unicode. Ces propriétés sont consultables avec des bibliothèques logicielles, ce qui permet au logiciel de traiter chaque classe de caractères de manières appropriée, par exemple lors de l'affichage ou du tri des données, qui peuvent devoir prendre en compte le sens d'écriture ou la dépendance de l'ordre lexicographique à la casse.