Aller au contenu

Numérique et sciences informatiques (spécialité) · Première

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 2n2^n 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 :

  1. choisir le nombre associé à chaque caractère (c'est le rôle du jeu de caractères) ;
  2. é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
CodageTaille d'un caractèreÀ retenir
ASCII7 bits128 caractères
ISO-8859-18 bitsLangues d'Europe occidentale
UTF-81 à 4 octetsIdentique à l'ASCII sur 1 octet
UTF-1616 bits (paires au-delà de 65 535)Bon compromis pour la mémoire
UTF-3232 bitsGourmand en mémoire
Les principaux codages de caractères · Les valeurs de ce tableau viennent des sources du cours.
Carte mentale : encoder du texteCarte mentale reliant l'encodage aux codages historiques, à Unicode et aux formes UTF.7 bits128 caractèresASCII8 bitsLatin-1CyrilliquePages de codePoint de code0 à 10FFFFUnicodeUTF-8UTF-16UTF-32Formes UTFEncodage

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

Encodages sur Internet en juillet 2012Diagramme en barres : UTF-8 65 pour cent, ASCII 15 pour cent, encodages occidentaux de type latin-1 environ 10 pour cent.UTF-865 %ASCII15 %Latin-1 (environ)10 %
  • UTF-865 %
  • ASCII15 %
  • Latin-1 (environ)10 %
Encodages sur Internet en juillet 2012 · Estimation de juillet 2012.
Calculer la taille d'un texteQuatre étapes : compter les caractères, choisir la taille par caractère, multiplier, convertir en octets.1CompterNombre de caractères du texte2ChoisirTaille d'un caractère dans l'encodage3MultiplierCaractères × taille par caractère4Convertir1 octet = 8 bits
  1. CompterNombre de caractères du texte
  2. ChoisirTaille d'un caractère dans l'encodage
  3. MultiplierCaractères × taille par caractère
  4. 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 10011011001101.

  1. Donne la valeur décimale de ce code.
  2. Vérifie qu'il est bien un code ASCII valide.
Indice 1

Écris la puissance de 2 associée à chaque position, de 262^6 à gauche jusqu'à 202^0 à droite.

Indice 2

Un code ASCII est un entier de 0 à 27−12^7-1.

Voir la correction pas à pas
  1. On associe à chaque bit sa puissance de 2 : 1×261\times 2^6, 0×250\times 2^5, 0×240\times 2^4, 1×231\times 2^3, 1×221\times 2^2, 0×210\times 2^1, 1×201\times 2^0.

  2. On additionne les puissances dont le bit vaut 1 : 64+8+4+1=7764 + 8 + 4 + 1 = 77.

  3. Sur 7 bits, on dispose de 27=1282^7 = 128 valeurs, de 0 à 127. Comme 77≤12777 \le 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
  1. En ISO-8859-1 : 8 bits = 1 octet par caractère, donc 12×1=1212\times 1 = 12 octets.

  2. En UTF-32 : 32 bits = 4 octets par caractère, donc 12×4=4812\times 4 = 48 octets.

  3. Différence : 48−12=3648 - 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 à 10FFFF1610FFFF_{16}. Les valeurs qui tiennent sur 16 bits vont de 0 à 65 535.

  1. Calcule le nombre total de valeurs de 0 à 10FFFF1610FFFF_{16}.
  2. Calcule le pourcentage de ces valeurs qui tient sur 16 bits, arrondi au centième.
Indice 1

Convertis 10FFFF1610FFFF_{16} en décimal avec les puissances de 16, ou remarque que c'est 165+164−116^5 + 16^4 - 1.

Indice 2

Le nombre de valeurs de 0 à NN est N+1N+1 ; sur 16 bits, il y en a 2162^{16}.

Voir la correction pas à pas
  1. 10FFFF16=1 114 11110FFFF_{16} = 1\,114\,111 en décimal.

  2. Le nombre de valeurs est 1 114 111+1=1 114 1121\,114\,111 + 1 = 1\,114\,112.

  3. Sur 16 bits, il y a 216=65 5362^{16} = 65\,536 valeurs.

  4. Pourcentage : 65 5361 114 112×100≈5,88 %\dfrac{65\,536}{1\,114\,112}\times 100 \approx 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 3A7F3A7F 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 3A7F3A7F : chacun s'écrit avec deux chiffres hexadécimaux.

Indice 2

Compare avec l'exemple D800 DC00→00 D8 00 DCD800\ DC00 \to 00\ D8\ 00\ DC.

Voir la correction pas à pas
  1. Le mot 3A7F3A7F contient deux octets : 3A3A puis 7F7F.

  2. Sur la machine qui inverse l'ordre, on écrit 7F7F puis 3A3A.

  3. La valeur représentée reste 3A7F3A7F : 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.

  1. Sur combien de bits le code ASCII code-t-il chaque caractère ?

  2. Combien de caractères distincts un code sur 7 bits permet-il de représenter au maximum ?

  3. En UTF-8, un caractère ASCII est représenté sur un seul octet, de la même façon qu'en ASCII.

  4. Pourquoi Unicode a-t-il besoin de plus de 8 bits par caractère ?

  5. Que fait l'UTF-16 pour un entier plus grand que 65 535 ?

  6. Quelles formes de codage sont définies pour Unicode ? (plusieurs réponses)

    Plusieurs réponses possibles.

  7. En Unicode, le caractère « é » ne peut être décrit que d'une seule manière.

  8. Combien y a-t-il de valeurs entières comprises entre 0 et 10FFFF1610FFFF_{16} (bornes incluses) ?

  9. Pourquoi faut-il indiquer l'encodage d'un texte écrit avec un standard régional comme ISO-8859-1 ?

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.2 UTF-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.

Sources

  1. Encodage des caractères et Unicode, Université Grenoble Alpes. Consulté le 6 novembre 2026.
  2. Codage des caractères, Wikipédia. Consulté le 6 novembre 2026.
  3. Unicode, Wikipédia. Consulté le 6 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page