Objectifs

Cette activité a pour objectif de développer ses connaissances concernant les fichiers binaires et textes, et les problématiques d’encodage.

Elle encourage une démarche d’investigation.

Texte ou binaire

  • Observer le contenu binaire d’un fichier odt ou docx, d’une image (jpeg, png, webp…), d’un programme Python et d’une page web avec l’éditeur hexadécimal GHex ou la commande hexdump -C fichier. Repérer les caractères imprimables en dernière colonne (“.” est soit un point, soit un caractère non imprimable).
  • Essayer d’ouvrir ces différents fichiers avec un éditeur de texte tel que Geany et rechercher le point commun (cf contenu binaire) entre ceux sont pris en charge et ceux qui ne le sont pas.

Ceux qui s’ouvrent avec Geany sont des fichiers de type “texte” (à ne pas confondre avec un document issu d’un traitement de texte).

Observation complémentaire : changer l’extension d’un fichier “odt” en “zip”, en extraire le contenu (graphiquement ou avec la commande unzip) et l’analyser.

Outil complémentaire : la commande file fichier affiche le type du fichier.

Fins de lignes

  • Ouvrir les fichiers cr-linux.txt et crlf-windows.txt avec un éditeur de texte et comparer leur contenu.
  • Dans le menu Document de l’éditeur, relever le type de fins de ligne utilisé.
  • Relever ensuite la taille des fichiers :
    • graphiquement (clic-droit / menu contextuel, Propriétés)
    • en ligne de commande, avec la commande ls -l nom_du_fichier.txt
  • Observer le contenu binaire des fichiers avec l’éditeur hexadécimal tel que GHex ou la commande hexdump -C fichier et repérer le caractère de retour chariot (“Carriage Return”) / à la ligne (“Line Feed”).
  • Se documenter sur l’utilisation des caractères CR/LF par les différents systèmes d’exploitation.

Encodage UTF-8 et ISO-8859

  • Ouvrir les fichiers utf-8.txt et iso-8859-15.txt avec un éditeur de texte, et comparer leur contenu.
  • Avec l’éditeur de texte, dans le menu Document, relever l’encodage utilisé.
  • Relever ensuite la taille des fichiers (graphiquement et en ligne de commande.
  • Observer le contenu binaire des fichiers avec l’éditeur hexadécimal :
    • remarquer le nombre d’octets nécessaires pour encoder un accent ; faire le lien avec la taille du fichier ;
    • relever les différents codages hexadécimaux des accents.

Encodage et pages web (HyperText Markup Language)

  • Ouvrir les pages utf-8.html, et iso-8859-15.html dans un navigateur et dans un éditeur de texte. Observer, analyser, émettre des hypothèses et les vérifier (cf guide si besoin).

Guide pour l’analyse de l’encodage

Observations

  • Dans le navigateur, certains caractères s’affichent mal avec le fichier iso-8859-15.html, alors qu’ils s’affichent correctement avec le fichier utf-8.html.
  • Le contenu des fichiers (cf éditeur de texte) semble pourtant identique.
  • Il y a une balise « meta » qui spécifie un encodage.

Connaissances mobilisées

  • Les caractères sont encodés sous forme binaire. Par exemple la table ASCII indique que le caractère « A » est encodé 0b 0100 0001 (0x41).
  • Il existe plusieurs encodages possibles pour (notamment) les caractères accentués : l’UTF-8 et l’ISO (8859-15 pour l’Europe de l’Ouest).
  • L’encodage UTF-8 utilise 2 octets pour les caractères accentués.

Hypothèse

Le problème pourrait être lié à l’encodage des caractères accentués.

→ Il faut s’assurer que l’encodage des fichiers est effectivement différent.

Vérification

  • La taille des fichiers diffère effectivement.
  • L’éditeur de texte indique un encodage différent pour les deux fichiers.
  • l’éditeur hexadécimal montre que l’encodage hexadécimal / binaire des accents est effectivement différent.

→ hypothèse confirmée

Nouvelles hypothèses

  1. Limitation des navigateurs qui ne supportent pas ISO-8859.
  2. Corrélation entre encodage du document et la valeur de la balise <meta charset="…"/>.

→ essayer différentes combinaisons d’encodage (cf propriétés du document) et de valeurs pour cette balise.