[Résolu] Problème de character set XML et PHP (SimpleXML)

Problème de character set XML et PHP (SimpleXML) [Résolu] - XML/XSL - Programmation

Marsh Posté le 16-01-2008 à 16:36:06    

Avec SimpleXML je charge un fichier XML que j'echo sur une page PHP, et j'ai des problèmes avec les caractères spéciaux. Je suppose que c'est à cause des caractères spéciaux mais je ne trouve pas où, pourquoi ni comment...
 
Fichier XML "myxmlfile" :  

<?xml version="1.0" encoding="ISO-8859-1"?>
<souselement>
 <messageFR>
   <![CDATA[
     <p>A partir de mardi il ne sera plus distribué de nouvelles cartes de fidélité. Cette intervention est la conséquence du coût croissant des denrées alimentaires (...) </p>
    ]]>
 </messageFR>
</souselement>


 
Code PHP :  

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html><head>
  3. <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  4. </head>
  5. <body>
  6. (...)
  7. <? if(!$xml=simplexml_load_file('./myxmlfile.xml'))
  8. { echo "Couldn't read the xml file";
  9. }
  10. else
  11. { $message =  $xml->messageFR;  
  12. }
  13. echo $message;
  14. ?>
  15. (...)


 
Output :  

Citation :

A partir de mardi il ne sera plus distribué de nouvelles cartes de fidélité. Cette intervention est la conséquence du coût croissant des denrées alimentaires (...)


 
J'ai bien défini le ISO-8859-1 (pas de débat entre ISO vs UTF-8 svp, je n'ai pas le choix), je ne comprends pas pourquoi ça ne va pas ...  :fou:  
 
Je dois sûrement oublier un paramètre ou une option quelque part ... mais où :??:  (à part dmc  :whistle: )
 
Quelqu'un a une idée ?


Message édité par ZeBix le 17-01-2008 à 16:29:47
Reply

Marsh Posté le 16-01-2008 à 16:36:06   

Reply

Marsh Posté le 16-01-2008 à 20:53:17    

Utilise UniRed pour vérifier que ton fichier xml est bien encodé en ISO-8859-1
 
Unired > www.esperanto.mv.ru/UniRed/FRA/index.html
 
Sinon c'est ta fonction simplexml_load_file qui ne tient pas compte de l'encodage du fichier xml lecture en ascii et là à part changer de fonction ...
 
Essais de changer tous tes encodages en UTF-8 c'est relativement standart on sait jamais

Reply

Marsh Posté le 17-01-2008 à 16:28:43    

Merci pour ta réponse :)
 
J'ai installé UniRed (tout une épopée de trouver le mot "Langues" dans l'interface par défaut qui est d'office en russe :), merci Babelfish!) mais il n'a pas aidé à résoudre le problème :/
 
On a chipoté un peu, et on a trouvé la solution !
Apparemment, le simpleXML lit tout en UTF-8, et ce n'est pas paramétrable. Il faut donc "décoder" cet UTF-8 qui ne l'est pas en vérité :)
 

Code :
  1. else
  2. { $message =  utf8_decode($xml->messageFR); 
  3. }


 
Et tout fonctionne à merveille !

Reply

Marsh Posté le 18-01-2008 à 20:54:09    

UniRed affiche l'encodage réel d'un fichier texte dans la barre en bas, très pratique pour vérifier la cohérence de la déclaration avec l'encodage réel du fichier pour les fichiers xml.
 
Effectivement faut tatonner un peu à la première ouverture =)
Sinon, ces histoires d'encodage c'est une vrai plaie ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed