Adloun

Le mot "Adloun" occupe combien d'octets en ASCII, en latin-1, en UTF-8

Exercice de TD · niveau 2 · NSI (première), chapitre 2 — Flottants, booléens et textes · Caractères, encodages et accidents de lecture

Énoncé

Le mot "Adloun" occupe combien d'octets en ASCII, en latin-1, en UTF-8 ? Et le mot "élève" ? Vérifier avec len(...encode(...)).

Corrigé

"Adloun" : six caractères, tous dans les premiers codes. Il occupe donc 6 octets dans les trois encodages. C'est la propriété qui a fait le succès d'UTF-8 : sur du texte purement anglais, il ne coûte rien de plus qu'ASCII.

"élève" : cinq caractères, dont deux accentués.


>>> len("Adloun"), len("Adloun".encode("utf-8"))
(6, 6)
>>> len("élève")
5
>>> len("élève".encode("latin-1"))
5
>>> len("élève".encode("utf-8"))
7
>>> "élève".encode("utf-8")
b'\xc3\xa9l\xc3\xa8ve'
>>> "élève".encode("ascii")
UnicodeEncodeError: 'ascii' codec can't encode character
'\xe9' in position 0: ordinal not in range(128)

Erreur attendue : confondre len(texte), qui compte des caractères, et len(texte.encode(e)), qui compte des octets. Ils coïncident en latin-1 et sur l'ASCII pur ; ils divergent dès qu'un caractère non anglais apparaît en UTF-8. Un programme qui dimensionne un tampon avec le premier alors qu'il écrit le second déborde.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.