Hi All,

J'ai écris une page HTML en UTF-8 (mixant des caractères latins et arabes). J'ai une balise <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">. Tout ce qu'il faut pour afficher une page en utf-8. Mais quand j'ouvre la page dans un navigateur, elle s'affiche comme si elle était en ascii, et il faut que je choisisse le codage explicitement dans le menu, pour que la page s'affiche normalement (aussi bien avec IE que FireFox)

Ors, je ne veux pas que les visiteur(se)s aient à selectionné l'encodage pour lire la page. Cela suppose déjà certaines connaissances, et je veut que mes pages soient accessibles à tous/toutes, et une page qui ne s'affiche pas correctement dés sa première présentation, n'est pas du tout correct à mes yeux.

Pourquoi le navigateur ignore t-il le charset déclaré dans http-equiv, et ne reconnais pas non-plus que le fichier est en utf-8 (ce qui devrait être facilement reconnu) ?

Je me suis dit que c'est peut-être le serveur qui renvoie un charset 8859-1 dans l'entête http... (valeur par défaut) mais quand même ça n'explique pas pourquoi le navigateur ignore le http-equiv de la balise meta.

Comment est reconnu http-equiv au juste ? A t-il la priorité sur le charset indiqué dans l'entête http ?

Comment s'assurer qu'une page codée en utf-8, soit bien reconnue comme telle par le navigateur qui la reçoit ?

Quelqu'un(e) a une idée ?

Merci beaucoup

A+ and Best Regards

p.s. je ne préfère pas utiliser l'encodage ISO-8859-6, car il n'est pas assez répandu (ex. mon éditeur de texte ne le supporte pas). Je lui préfère donc l'utf-8. And however, le même problème de reconnaissance d'encodage se poserait surement aussi, s'il s'avère que les pages web sont systèmatiquement considérées comme encodées ISO-8859-1, en toute ignorance des directives qui peuvent données.
Modifié par hibou57 (11 Jan 2006 - 18:08)
Hello,

je suis, depuis ce matin, en train d'étudier l'utilisation de l'UTF-8 avec PHP, j'avoue être un peu perdu, je vais surement créer un sujet aussi.

MAIS, j'ai peut-être une réponse à ton problème. J'ai cru comprendre que le serveur devait envoyer une en-tête afin de dire au navigateur quel encodage était utilisé.

Avec PHP :
header('Content-Type: text/html; charset=UTF-8');

Sans PHP (dans le .htaccess) :
AddDefaultCharset UTF-8


Essaies ça et dit moi si ça fonctionne. Smiley smile

Antoine
Merci Bouda, je venais justement dire que le problème est résolu... je viens de trouver exactement la même réponse sur un autre forum.

En fait, la balise meta http-equiv, n'est pas interprété par le navigateur, mais par le serveur.

Puis en ce qui concerne le fichier .htaccess, la solution est bonne en lui donnant l'option utf-8, mais il y a mieux encore, c'est de lui donner l'option « off ». En effet, cette option indique au serveur de se renseigner sur la page, pour savoir qu'elle encodage renvoyé dans l'entête http. Ainsi, le charset indiqué dans l'entête http, est en cohérence avec le charset indiqué dans la page html.

En résumé, « AddDefaultCharset Off » est la solution la plus universelle et la plus logique. Mais « AddDefaultCharset nom-d-encodage » est une bonne solution aussi, si toutes les pages du site sont encodées de la même manière.

Merci pour tout Bouda,

Je m'interesse aussi au problème de localisation, alors si tu as des questions à poser, peut-être que je pourrai t'aider aussi. Je passerai de temps en temps voir si tu pose une question ici.

Bon Courage pour tes projets Smiley smile
Modifié par hibou57 (11 Jan 2006 - 18:10)