programmation Java (école d'ingénieur) · Chapitre 14 · Application directe du cours
Caractères et octets
Fichiers et flux · niveau 1 (application)
Énoncé
On écrit la chaîne "Noël à Nîmes €" dans un fichier, en UTF-8.
- Combien de caractères contient la chaîne ? Combien d'octets occupe le fichier ?
- On réécrit le fichier en ISO-8859-1, sans le symbole euro. Combien d'octets occupe-t-il ? Pourquoi a-t-il fallu retirer « € » ?
- Écrire un programme qui vérifie ces réponses.
Corrigé
- La chaîne a caractères. En UTF-8, les caractères ASCII occupent un octet, « ë », « à » et « î » deux octets, « € » trois : octets.
- En ISO-8859-1, chaque caractère occupe un octet : octets pour « Noël à Nîmes ». Le symbole euro n'existe pas dans cet encodage (il lui est postérieur) :
Files.writeStringrefuse alors d'écrire et lève uneUnmappableCharacterException, tandis que la méthodegetBytesd'une chaîne le remplace en silence par un point d'interrogation. -
Path f = Path.of("accents.txt");
Files.writeString(f, "Noël à Nîmes €", StandardCharsets.UTF_8);
String s = Files.readString(f, StandardCharsets.UTF_8);
System.out.println(s.length() + " caractères, " + Files.size(f) + " octets en UTF-8");
Files.writeString(f, "Noël à Nîmes", StandardCharsets.ISO_8859_1);
System.out.println(Files.size(f) + " octets en ISO-8859-1 (sans le symbole euro)");
14 caractères, 19 octets en UTF-8
12 octets en ISO-8859-1 (sans le symbole euro)100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.