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.
- 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.
- Ouvrir les fichiers
cr-linux.txtetcrlf-windows.txtavec 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 fichieret 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.
- Ouvrir les fichiers
utf-8.txtetiso-8859-15.txtavec 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.
- Ouvrir les pages
utf-8.html, etiso-8859-15.htmldans un navigateur et dans un éditeur de texte. Observer, analyser, émettre des hypothèses et les vérifier (cf guide si besoin).
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 fichierutf-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
- Limitation des navigateurs qui ne supportent pas ISO-8859.
- 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.