Bonsoir,

D'habitude je réponds, mais pour une fois je vais poser une question parce que je deviens dingue...

J'ai une page en UTF8, header et meta renseignés. Jusque là tout va bien. Dans cette page une requête AJAX va chercher du contenu en faisant appel à un script php. Lequel script renvoie une réponse également en UTF8... dumoins en théorie.

En l'occurence j'obtiens ceci:
Re: Bonjour ? tous

Je me dis que c'est le script renvoit de l'iso et change donc l'encodage manuellement dans firefox... et je vois:
Re: Bonjour à tous

ce qui correspond habituellement à de l'unicode affiché en iso.
Je teste alors quasiment tous les encodages dispo dans le menu de firefox (iso-xx, utf-x, etc) et aucun ne marche. Smiley confus

Je me dis que le texte est peut-être doublement encodé en utf-8, et ajoutes donc un utf8_decode() (en php) avant l'envoi.
Là j'ai toujours des ? en utilisant l'utf-8. Par contre en switchant sur iso je vois bien les accents. Smiley sweatdrop

Et, pour finir en beauté,
echo utf8_encode(utf8_decode($text));

(en php) marche et affiche bien les accents en utf-8. Smiley biggol


J'obtiens donc une réponse correcte mais au prix d'un bidouillage que je préférerais éviter du fait de son illogisme total.
La question est donc pourquoi le prétendu utf-8 de base ne s'affiche pas correctement alors que la dernière manipulation semble montrer que c'en est réellement ?
Modifié par Necromantik (24 Oct 2007 - 18:11)
Ouah, alors là ça me dépasse...

Juste pour savoir: tu avais un utf8_encode() simple au départ, avant le test final?
Et le contenu que tu vas récupérer, il est stocké avec quel encodage?
Le contenu provient de différents endroits:
-un fichier de traduction (encodé en UTF8)
-une base de donnée (MySQL5, le champ est également en UTF8 "utf8_general_ci")
-un système de cache (désactivé le problème reste identique).

-> tous les accents sont corrompus quelle que soit l'origine

Il n'y a aucun traitement effectué au départ le tout étant censé être directement de l'UTF8, je n'ai ajouté les encode/decode qu'à des fin de test.
Étant donné que le script est pas de moi je vais tenter de récrire certaines parties et voir ce que ça donne Smiley biggol
Modifié par Necromantik (02 Oct 2007 - 13:23)
Ai trouvé Smiley lol

Le script faisait ceci
// convert nbsps back to normal spaces if not html
$str = str_replace(chr(160), ' ', $str);


Or chr() retourne le code ISO-8859-1 d'un caractère, si on cherche ça dans de l'utf8 forcément le résultat est plus ou moins aléatoire.

M'en vais écrire un mail à l'auteur désolé d'avoir posté pour rien Smiley murf
Modifié par Necromantik (02 Oct 2007 - 19:10)