Encodage des caractères : ASCII et Unicode, cours de Première NSI
Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur
L'essentiel
Un ordinateur ne stocke que des nombres : un jeu de caractères codé associe à chaque caractère un entier, puis un encodage transforme cet entier en suite de bits.2
L'ASCII code 128 caractères sur 7 bits ; les pages de code comme ISO-8859-1 utilisent 8 bits, mais chacune ne couvre qu'une région du monde.23
Unicode rassemble tous les caractères dans un répertoire unique : chaque caractère a un point de code entre 0 et 10FFFF en hexadécimal.2
Les formes de codage UTF-8 (1 à 4 octets), UTF-16 et UTF-32 transforment les points de code en octets ; l'UTF-8 reste identique à l'ASCII pour les 128 premiers caractères.13
Pour comparer des tailles : nombre de caractères × taille d'un caractère ; avec n bits on distingue 2n valeurs.
Introduction : pourquoi coder les caractères ?
Quand tu tapes un message, tu vois des lettres, des accents, parfois des symboles venus d'autres alphabets. Pourtant, la mémoire d'un ordinateur ne contient que des bits, des 0 et des 1. Pour stocker ou transmettre du texte, il faut donc un accord : à quel nombre correspond chaque caractère, et comment ce nombre est écrit en binaire ?
Cet accord s'appelle un codage des caractères. Tu as déjà vu comment écrire un entier en base 2, 10 et 16 : ces compétences sont exactement celles dont on a besoin ici. Dans ce cours, on suit l'histoire logique du problème : d'abord un code très simple (l'ASCII), puis des extensions limitées, puis la solution générale (Unicode) et ses différentes écritures en octets (UTF-8, UTF-16, UTF-32).
1. Du caractère au nombre : jeu de caractères et encodage
Il faut bien séparer deux étapes, que l'on confond souvent :
choisir le nombre associé à chaque caractère (c'est le rôle du jeu de caractères) ;
écrire ce nombre en bits, donc en octets (c'est le rôle de l'encodage, ou « forme de codage »).
Pour l'ASCII, les deux étapes sont presque confondues : le nombre est directement écrit sur 7 bits. Pour Unicode, elles sont bien distinctes, et plusieurs encodages existent pour un même jeu de caractères.23
2. L'ASCII : 7 bits pour 128 caractères
L'ASCII a une histoire liée à celle des ordinateurs. En juillet 1971, le document RFC 183, consacré aux codes EBCDIC et à leur correspondance avec l'ASCII, a posé les bases de la conversion vers l'ASCII afin de limiter les caractères utilisés.2 La dernière variante américaine normalisée de l'ASCII (norme ISO 646) date de 1984.2
3. Les codages sur 8 bits : un octet, mais une région du monde
Pour écrire le français, l'allemand ou l'espagnol, 128 caractères ne suffisent pas. Un octet offre 256 valeurs : on a donc créé des codages sur 8 bits, qui gardent l'ASCII et utilisent les valeurs restantes pour d'autres caractères. La plupart des pages de codes nationales utilisent ainsi 8 bits.3
D'autres variantes de la même famille existent pour d'autres régions : ISO-8859-5, par exemple, est prévue pour l'alphabet cyrillique.1 Les créateurs ont cherché à réutiliser les mêmes positions pour des caractères identiques ou proches quand c'était possible.2
4. Unicode : un répertoire universel de caractères
5. De l'entier aux octets : UTF-8, UTF-16 et UTF-32
Un point de code est un entier : il reste à choisir comment l'écrire en octets. Les premières versions d'Unicode fixaient la limite à 16 bits, et celles de la norme ISO/CEI 10646 à 32 bits.3 Plusieurs formes de codage existent. Elles convertissent les valeurs des points de code en une suite de bits.2
Les principaux codages de caractères
Codage
Taille d'un caractère
À retenir
ASCII
7 bits
128 caractères
ISO-8859-1
8 bits
Langues d'Europe occidentale
UTF-8
1 à 4 octets
Identique à l'ASCII sur 1 octet
UTF-16
16 bits (paires au-delà de 65 535)
Bon compromis pour la mémoire
UTF-32
32 bits
Gourmand en mémoire
Les principaux codages de caractères · Les valeurs de ce tableau viennent des sources du cours.
Encodage
ASCII
7 bits
128 caractères
Pages de code
8 bits
Latin-1
Cyrillique
Unicode
Point de code
0 à 10FFFF
Formes UTF
UTF-8
UTF-16
UTF-32
Carte mentale : encoder du texte
6. Octets, boutisme et marque d'ordre des octets
7. Quel encodage choisir sur le web ?
Depuis 2010, ce sont l'UTF-8 et l'ASCII qui dominent sur Internet.2 En juillet 2012, leur utilisation conjointe était estimée à 80 % : 65 % pour l'UTF-8 et 15 % pour l'ASCII. Les encodages occidentaux de type latin-1 représentaient environ 10 %, et tous les autres moins de 10 %.2
UTF-865 %
ASCII15 %
Latin-1 (environ)10 %
Encodages sur Internet en juillet 2012 · Estimation de juillet 2012.
CompterNombre de caractères du texte
ChoisirTaille d'un caractère dans l'encodage
MultiplierCaractères × taille par caractère
Convertir1 octet = 8 bits
Calculer la taille d'un texte
Exercices corrigés
Exercice 1 Convertir un code binaire sur 7 bits
★☆☆Environ 5 min
Un caractère est codé en ASCII par la suite de 7 bits 1001101.
Donne la valeur décimale de ce code.
Vérifie qu'il est bien un code ASCII valide.
Indice 1
Écris la puissance de 2 associée à chaque position, de 26 à gauche jusqu'à 20 à droite.
Indice 2
Un code ASCII est un entier de 0 à 27−1.
Voir la correction pas à pas
On associe à chaque bit sa puissance de 2 : 1×26, 0×25, 0×24, 1×23, 1×22, 0×21, 1×20.
On additionne les puissances dont le bit vaut 1 : 64+8+4+1=77.
Sur 7 bits, on dispose de 27=128 valeurs, de 0 à 127. Comme 77≤127, le code est valide.
Le code vaut 77. Pour les codes sur 7 bits, la plus grande valeur possible est 127, ce qui correspond bien aux 128 caractères de l'ASCII.
Exercice 2 Taille d'un message selon l'encodage
★★☆Environ 8 min
Un message de 12 caractères, tous dans le plan multilingue de base d'Unicode, est enregistré de deux façons : en ISO-8859-1 (8 bits par caractère) et en UTF-32 (32 bits par caractère). On suppose que tous les caractères existent en ISO-8859-1.
Calcule, en octets, la différence de taille entre les deux fichiers (UTF-32 moins ISO-8859-1).
Indice 1
Convertis d'abord les bits en octets : 8 bits font 1 octet.
Indice 2
Calcule la taille de chaque fichier, puis fais la soustraction.
Voir la correction pas à pas
En ISO-8859-1 : 8 bits = 1 octet par caractère, donc 12×1=12 octets.
En UTF-32 : 32 bits = 4 octets par caractère, donc 12×4=48 octets.
Différence : 48−12=36 octets.
Le fichier UTF-32 est plus lourd de 36 octets. L'UTF-32 est simple à traiter (une taille fixe) mais gourmand en mémoire.
Exercice 3 Quelle part du répertoire tient sur 16 bits ?
★★★Environ 12 min
Les points de code d'Unicode vont de 0 à 10FFFF16. Les valeurs qui tiennent sur 16 bits vont de 0 à 65 535.
Calcule le nombre total de valeurs de 0 à 10FFFF16.
Calcule le pourcentage de ces valeurs qui tient sur 16 bits, arrondi au centième.
Indice 1
Convertis 10FFFF16 en décimal avec les puissances de 16, ou remarque que c'est 165+164−1.
Indice 2
Le nombre de valeurs de 0 à N est N+1 ; sur 16 bits, il y en a 216.
Voir la correction pas à pas
10FFFF16=1114111 en décimal.
Le nombre de valeurs est 1114111+1=1114112.
Sur 16 bits, il y a 216=65536 valeurs.
Pourcentage : 111411265536×100≈5,88%.
Environ 5,88 % des valeurs possibles tiennent sur 16 bits. La majorité des caractères d'usage courant se situe pourtant dans cette partie, ce qui justifie que l'UTF-16 soit un bon compromis.3
Exercice 4 Lire des octets dans l'ordre des machines
★★★Environ 10 min
Un mot de 16 bits vaut 3A7F en hexadécimal. Sur une architecture qui, comme l'Intel x86 dans l'exemple du cours, inverse l'ordre des octets de chaque mot de 16 bits, dans quel ordre les deux octets sont-ils écrits en mémoire ? Explique pourquoi ce choix ne change pas la valeur représentée.
Indice 1
Repère les deux octets dans 3A7F : chacun s'écrit avec deux chiffres hexadécimaux.
Indice 2
Compare avec l'exemple D800DC00→00D800DC.
Voir la correction pas à pas
Le mot 3A7F contient deux octets : 3A puis 7F.
Sur la machine qui inverse l'ordre, on écrit 7F puis 3A.
La valeur représentée reste 3A7F : seule la façon de ranger les octets en mémoire a changé. À la lecture, la machine remet les octets dans le bon sens.
En mémoire, on lit 7F 3A. Pour échanger des fichiers entre machines, il faut donc savoir quel ordre a été utilisé, d'où l'intérêt de l'indicateur d'encodage en début de flot.2
Quiz
9 questions · correction immédiate · ton score reste sur ton appareil.
L'ASCII code les caractères en entiers sur 7 bits.2 La réponse « 8 bits » est une confusion fréquente avec ISO-8859-1 et les pages de code nationales, qui utilisent un octet entier.3
Avec 7 bits, on forme 27=128 suites différentes, ce qui correspond aux 128 caractères de l'ASCII.3 Répondre 127 confond la plus grande valeur (127) et le nombre de valeurs (128, car on compte le 0).
C'est vrai : les 128 caractères ASCII sont représentés de manière identique, sur un octet, par les points de code U+0000 à U+007F.3 Penser que l'UTF-8 utilise toujours plusieurs octets est faux : seuls les caractères hors ASCII demandent 2 à 4 octets.
Unicode rassemble les caractères de chaque page de code, ce qui dépasse les 256 valeurs d'un octet.3 Les autres propositions n'ont aucun rapport avec le nombre de caractères à distinguer.
Ces grands entiers sont représentés comme des paires d'entiers inférieurs à 65 536.2 Tronquer la valeur donnerait un autre caractère : ce serait une perte d'information.
UTF-8, UTF-16 et UTF-32 transforment les points de code d'Unicode en octets.13 L'ASCII est un jeu de caractères sur 7 bits plus ancien, dont Unicode reprend les 128 premiers caractères.2
C'est faux : on peut utiliser le caractère précomposé « é », ou le « e » suivi de l'accent aigu sans chasse. Le glyphe affiché est le même.3
10FFFF16=1114111, et il faut ajouter 1 pour compter le 0, soit 1114112 valeurs, « un peu plus de 1,1 million ».2 Répondre 1 114 111 oublie la valeur 0.
Les standards régionaux ne couvrent qu'un ensemble réduit de caractères, et l'encodage doit donc être précisé séparément du contenu.2 Sans cette information, un même octet pourrait être lu avec une autre page de code. Les autres propositions inventent un chiffrement ou un changement par ligne qui n'existent pas.
Les questions qu'on se pose
Quelle différence y a-t-il entre Unicode et UTF-8 ?
Unicode est le répertoire de caractères : à chaque caractère correspond un point de code entre 0 et 10FFFF en hexadécimal.2UTF-8 est une façon d'écrire ces points de code en octets, avec 1 à 4 octets par caractère.1 UTF-16 et UTF-32 sont d'autres façons d'écrire les mêmes points de code.
Pourquoi l'UTF-8 est-il si répandu ?
Il permet de représenter tous les caractères d'Unicode et reste identique à l'ASCII pour les 128 premiers caractères.3 Dès 2010, ces deux encodages se sont imposés comme les plus utilisés sur Internet.2 Un texte ne contenant que de l'ASCII reste valide sans conversion.
Combien d'octets prend un caractère en UTF-8 ?
Cela dépend du caractère : 1 octet pour les points de code ASCII, 2 à 4 octets pour les autres.3 Pour estimer la taille d'un texte, on encadre donc : au minimum 1 octet par caractère, au maximum 4. Pour connaître la taille exacte, il faut connaître chaque caractère.
Que se passe-t-il si on lit un fichier avec le mauvais encodage ?
Les octets sont interprétés avec une autre table : les caractères obtenus peuvent différer de ceux qui ont été écrits. Les standards régionaux imposent d'indiquer l'encodage à l'extérieur du flot, justement pour éviter ce problème.2 Pour du texte purement ASCII, la lecture reste correcte en UTF-8 car les 128 premiers caractères sont identiques.3
Faut-il apprendre la table ASCII par cœur ?
Non. Il faut savoir ce qu'elle est (7 bits, 128 caractères),3 comprendre comment passer d'un code binaire ou hexadécimal à sa valeur décimale, et savoir retrouver un caractère dans une table fournie. Les questions portent surtout sur les capacités des codages, les conversions et la comparaison des tailles.