Comprendre (la base de la base) des encodages en moins de 5 minutes
Par Christophe, dimanche 2 avril 2006 à 08:43 :: Informatique :: #19 :: rss
Note: le but de ce post n'est ABSOLUMENT PAS le problème des charset/encodages des pages web, c'est juste un exemple, (et ne me parlez surtout pas de <meta />)
Situation initiale
Vous avez enregistré votre page web depuis un éditeur texte "standard", comme gedit, et elle ressemble à ça :
<html> <head> <title>ma page</title> </head> <body> mon site qui va me rapporter du blé ! </body> </html>
Et vous consultez ça dans un navigateur "standard"...
Problème
Il s'affiche "mon site qui va me rapporter du blé !", et vous essayerez avec d'autres caractères accentués, ça ne passera pas non plus, en sortant toute sortes de caractères bizarres. Eh bien sachez le dès maintenant, ces caractères ne sont pas sortis de nulle part !
Un monde de bits
Vous n'êtes pas débiles, vous savez que "tout est binaire" sur un ordinateur, et ça change beaucoup de choses pour vous, à commencé par le fait que par défaut, les navigateurs considèrent une page comme de l'ISO-8859-1. En gros, c'est un encodage de caractères prévu pour les langues ouest-européenne, qui représente tout caractère sur 8 bits, un octet.
La lettre "a" est donc représentée par 1100001, et la lettre "é" par 11101001, mais on s'en fiche.
Le problème est que vous avez enregistré votre page en UTF-8 (encodage par défaut de gedit, et bien d'autre logiciels), et en utf-8, un caractère peut être codé sur un nombre d'octets variable (de 1 à 4). En UTF-8 donc, la lettre "é" est représentée par 11000011 10101001, mais le navigateur quand à lui ne sait PAS que c'est de l'utf-8, comment pourrait-il le deviner ?
Il lit donc le document comme si il était en ISO, et affiche les caractères au code 11000011 puis 10101001, qui sont respectivement à et ©.
Pourquoi gedit utilise l'UTF-8 par défaut ? Pour vous compliquer la vie ?
Non, juste parce qu'en ISO-8859-1, l'on peut afficher que 191 caractères, tandis que l'on dépasse le million en UTF-8 (en théorie, de toutes les langues du monde).
Conclusion ?
Je ne vous dirait pas comment résoudre ce ridicule petit problème de fillette, je voulais juste vous inciter à vous intéresser à la grande (et passionnante pour ma part) question du choix de l'encodage de ses fichiers ({oui mais si j'utilise l'utf-8, mes fichiers seront plus lourds ?} ou {et si jamais je devais incorporer des caractères étrangers, je ferai comment ?} etc...) . Car oui, ça concerne toute sorte de fichiers. En conclusion donc, je vous invite fortement à lire les liens qui suivent :
- http://fr.wikipedia.org/wiki/Binaire et http://fr.wikipedia.org/wiki/Hexadécimal pour se préparer
- http://fr.wikipedia.org/wiki/Codage_de_caractères et http://fr.wikipedia.org/wiki/ASCII pour commencer
- http://fr.wikipedia.org/wiki/ISO_8859-1 et http://fr.wikipedia.org/wiki/Unicode pour continuer, avec leur sous-liens
- http://fr.wikipedia.org/wiki/Endianness et http://en.wikipedia.org/wiki/Byte_Order_Mark pour approfondir un peu
- http://openweb.eu.org/articles/jeux_caracteres/, une quasi-référence
- http://www.arcanapercipio.com/gen/binaire/bin-txt.php que j'ai regardé en diagonale, mais qui semble tout à fait approprié
- http://www.google.fr, votre meilleur ami

Commentaires
1. Le lundi 3 avril 2006 à 12:28, par la notte
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.