Adloun

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.writeString refuse alors d'écrire et lève une UnmappableCharacterException, tandis que la méthode getBytes d'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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →