Comment diagnostiquer un problème d'encodage ISO ou UTF-8  ?

Astuce par
Créé le , mis à jour le (69282 lectures)
Tags : xhtml, encodage

Un problème d'encodage se manifeste par le fait qu'une partie ou la totalité des caractères spéciaux (accents, ½, », etc) d'un document ne sont pas affichés correctement. Par exemple l'affichage d'UTF8 en iso-8859-1 donnera des é à la place des é. Inversement afficher un document iso-8859-1 en UTF8 affichera des ? à la place des accents. Si vous vous trouvez dans cette situation, il vous faut déterminer la source et trouver une solution à votre problème.

UTF-8

Attention tout de même à ne pas confondre avec la situation où la police utilisée ne supporte pas les caractères affichés, tout le texte sera alors mal rendu (par exemple sur une page en japonais).

Caractérisations

a) Quelle est l'étendue du problème ? S'agit-il du document entier, d'une partie provenant d'une source externe (fichier inclus, RSS, base de données, etc) ou d'une partie quelconque ?

b) Arrivez-vous à obtenir un rendu normal dans la partie concernée en forçant le jeu de caractères de votre navigateur ? Firefox : Affichage->Encodage, Opera : Afficher->Encodage, IE : Page->Codage. N'essayez pas non-plus toute la liste, les plus communs suffisent souvent à le savoir.

Identifications & solutions

Voici les cas les plus courants classés en fonctions des résultats obtenus avec les manipulations ci-dessus, ceux qui ne sont pas listés arrivent très rarement, venez en discuter sur le forum.

Affecte : document entier, Correction: possible

Vous êtes en face d'une déclaration d'encodage erronée, celui renseigné ne correspond pas à celui du document.

Solution : corriger la déclaration (Comment bien déclarer l'encodage des caractères d'un document ?)

Affecte : partie externe, Correction: possible

Le problème vient du fait que le jeu de caractères utilisé par la source externe n'est pas identique à celui de votre document. Par exemple vous affichez le contenu d'un fichier XML encodé en UTF8 dans un document iso-8859-1.

Solution : normaliser l'encodage du document et de la source (rendre les deux identique) soit en le modifiant pour l'un des côtés soit en effectuant une conversion lors de l'importation.

Affecte : souvent partie quelconque, Correction: impossible

Ici la situation est plus délicate, il s'agit souvent d'une corruption de l'encodage. Cela peut arriver par exemple lorsque l'on modifie de l'UTF8 à l'aide de fonctions prévues pour de l'ASCII ou de l'iso-8859-1. Dans ce cas l'encodage est altéré et ne correspond plus à rien, devenant du même coup illisible.

Solution : malheureusement il s'agit souvent de cas par cas, les origines étant très diverses. Vérifiez tout de même quels traitements vous effectuez sur le texte en question et si le problème disparaît en les supprimant.

Ressources