ASCII et Unicode : qu'est-ce que c'est et à quoi ça sert

Un ordinateur ne comprend que des nombres : chaque lettre que tu vois à l'écran est donc un code. L'ASCII a été la première table de codes devenue standard, et Unicode est celle que nous utilisons aujourd'hui pour écrire dans n'importe quelle langue. Tu vois ici comment ils fonctionnent, quels codes il vaut mieux connaître, pourquoi des symboles étranges apparaissent parfois à la place des accents et comment tout consulter dans la table.

Mis à jour:

Qu'est-ce qu'un encodage de caractères

Un encodage est un accord : « le nombre 65 signifie la lettre A ». Quand tu écris un texte, le programme enregistre ces nombres ; quand une autre personne l'ouvre, son programme les retraduit en lettres avec le même accord. Si les deux n'utilisent pas la même table, le texte s'affiche mal.

Il faut distinguer deux idées. La première est le jeu de caractères, la liste de quels nombres correspondent à quels symboles. La seconde est la façon dont ces nombres sont stockés en octets. En ASCII, les deux coïncident de façon triviale ; en Unicode, non, et c'est là qu'intervient l'UTF-8.

ASCII : 128 caractères sur 7 bits

L'ASCII (sigle de American Standard Code for Information Interchange) a été normalisé dans les années 1960. Il utilise 7 bits, soit 2 puissance 7 = 128 codes, de 0 à 127. Parmi eux, 33 sont des caractères de contrôle (de 0 à 31 et le 127) et 95 sont imprimables (de 32 à 126, espace compris).

Il ne comprend ni lettres accentuées, ni le ñ, ni le symbole de l'euro : il a été conçu pour l'anglais. Cela explique pourquoi d'autres tables ont ensuite été nécessaires.

Les codes que tu rencontreras le plus. L'espace (32) compte comme imprimable même s'il ne se voit pas.
Caractère de contrôleDécimalHexadécimalBinaire (7 bits)À quoi il sert
Nul (NUL)0000000000Marque la fin d'une chaîne dans plusieurs langages
Tabulation horizontale (TAB)9090001001Saute à la tabulation suivante
Saut de ligne (LF)100A0001010Passe à la ligne suivante
Retour chariot (CR)130D0001101Revient au début de la ligne
Échappement (ESC)271B0011011Démarre des séquences de contrôle
Espace32200100000Premier caractère imprimable
Supprimer (DEL)1277F1111111Efface le caractère

Relations à retenir

La table n'est pas ordonnée au hasard. Avec quelques régularités, tu peux lire des codes de tête.

Fin de ligne : LF, CR et CRLF

Un saut de ligne semble simple, mais il s'écrit différemment selon le système. Unix, Linux et macOS utilisent un seul caractère, LF (10). Windows en utilise deux à la suite, CR et LF (13 et 10), appelés CRLF. Les anciens téléscripteurs avaient besoin de deux ordres distincts : ramener le chariot au début et faire avancer le papier d'une ligne.

Cette différence est la cause de fichiers qui s'affichent sur une seule ligne dans un éditeur basique, ou avec un symbole étrange à la fin de chaque ligne. Si tu cherches le code de chacun, écris LF ou CR dans le champ de recherche de la table ASCII.

L'« ASCII étendu » n'est pas un standard

Comme un octet compte 8 bits et que l'ASCII n'en utilise que 7, il restait 128 codes libres (de 128 à 255) et chaque fabricant et chaque région les a remplis à sa façon. On appelle cela l'« ASCII étendu », mais il n'existe pas une table unique : il y en a beaucoup, appelées pages de codes. Deux des plus connues sont Latin-1 (ISO-8859-1), où le é est le code 233, et Windows-1252, similaire mais avec des différences dans les codes 128 à 159 (c'est là que se trouve, par exemple, l'euro).

Le problème, c'est que le code 233 signifie « é » dans une table et autre chose dans une autre. Un texte écrit avec une table et lu avec une autre affichait n'importe quoi. Unicode est né pour mettre fin à ce désordre.

Unicode et UTF-8

Unicode attribue un numéro unique, appelé point de code, à chaque caractère de presque tous les systèmes d'écriture du monde, plus des symboles et des émojis. Il compte aujourd'hui plus de 150 000 caractères. On l'écrit avec le préfixe U+ et en hexadécimal : le « A » est U+0041, le « ñ » est U+00F1, l'euro est U+20AC et l'émoji du visage souriant est U+1F600. Les 128 premiers points de code sont exactement ceux de l'ASCII.

L'UTF-8 est la manière la plus utilisée de stocker ces nombres en octets, et il en utilise de 1 à 4 selon le caractère. Les 128 de l'ASCII occupent un seul octet identique à celui d'avant, donc un texte ASCII est aussi un texte UTF-8 valide. Le reste occupe plus d'octets.

Plus on s'éloigne de l'ASCII, plus le caractère occupe d'octets.
CaractèrePoint de codeOctets en UTF-8Octets (hexadécimal)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Pourquoi « é » apparaît à la place de « é »

C'est l'erreur la plus courante et elle a une explication exacte. Le é en UTF-8 fait deux octets : C3 et A9. Si un programme croit que le texte est en Latin-1, il lit chaque octet comme un caractère : le C3 est « à » et le A9 est « © ». Résultat : « é ». Il se passe la même chose avec « è », qui s'affiche « è », et avec « café », qui apparaît comme « café ».

La solution consiste presque toujours à indiquer au programme d'ouvrir le fichier en UTF-8 (dans un éditeur de texte ou dans les paramètres d'importation d'un tableur). Quand c'est l'inverse, un texte en Latin-1 lu comme de l'UTF-8, on voit souvent apparaître des losanges avec un point d'interrogation, car ces octets isolés ne forment pas de séquences UTF-8 valides.

Comment utiliser la table ASCII et le convertisseur

L'outil « Table ASCII » affiche les 128 caractères avec leur code en décimal, hexadécimal, octal et binaire, et le nom de ceux de contrôle.

  1. Écris dans le champ de recherche un caractère, un code ou le nom d'un caractère de contrôle (par exemple A, 65, 41 ou LF) pour trouver sa ligne.
  2. Utilise les boutons de filtre (Contrôle, Chiffres, Majuscules, Minuscules, Signes) pour n'afficher qu'un groupe.
  3. Pour convertir, écris un texte dans « Texte » et choisis le format (décimal, hexadécimal, octal ou binaire) : les codes apparaissent en dessous. « Hola » donne 72 111 108 97 en décimal et 48 6F 6C 61 en hexadécimal.
  4. Tu peux aussi faire l'inverse : colle des codes séparés par des espaces ou des virgules dans « Codes » et le texte se construit. En hexadécimal, les préfixes comme 0x41 sont acceptés.

Si le texte contient des caractères qui ne sont pas ASCII, comme le ñ, l'outil le signale et affiche leur code Unicode. Pour voir les octets réels en UTF-8, utilise « Texte en binaire » : le ñ donne 11000011 10110001, deux octets de 8 bits. Les limites : la table n'affiche que l'ASCII standard, pas l'étendu, et tout est calculé dans ton navigateur sans envoyer le texte à un serveur.

Questions fréquentes

Combien de caractères l'ASCII compte-t-il ?

128, avec des codes de 0 à 127 et 7 bits chacun. Parmi eux, 33 sont de contrôle et 95 sont imprimables, espace compris.

Quel est le code ASCII de la lettre A et de la lettre a ?

Le « A » est 65 (41 en hexadécimal, 01000001 en binaire) et le « a » est 97 (61 en hexadécimal, 01100001 en binaire). Ils diffèrent toujours de 32.

Quelle est la différence entre ASCII et Unicode ?

L'ASCII compte 128 caractères pensés pour l'anglais. Unicode en compte plus de 150 000, de presque toutes les langues et des émojis, et ses 128 premiers sont les mêmes que ceux de l'ASCII.

Qu'est-ce que l'UTF-8 ?

C'est la manière la plus utilisée de stocker du texte Unicode en octets. Il utilise de 1 à 4 octets par caractère : ceux de l'ASCII en occupent un, un é en occupe deux et un émoji quatre.

Pourquoi mon texte affiche-t-il « é » ou « è » ?

Parce qu'un texte enregistré en UTF-8 est lu comme du Latin-1. Ouvre le fichier en indiquant l'encodage UTF-8 et le problème est réglé.