simplexml_load_file

lavercq
simplexml_load_file

J'ai un problème avec cette nouvelle fonction PHP5, voyez ce qui s'affiche lorsque je lui demande de lire mes fichiers XML qui comportent bien entendu des caractères accentués : é, à...etc...courants dans nos langues latines.
Quelqu'un a-t-il eu ce problème, et comment le surmonter ?
Merci d'avance pour votre aide.

Warning: simplexml_load_file() [function.simplexml-load-file]:
C:/xampplite/htdocs/xampp/webdev/xml/article20050701144949.xml:2: parser
error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE0 0x20 0x61
0x72 in C:\xampplite\htdocs\xampp\webdev\sitemap.php on line 12

golthar

comme tu l'as présenti, c 'est tout simplement un pb d'encodage (c'est un grand classique)
ton fichier source doit etre en code en UTF 8 pour fonctionner par defaut avec simpleXML.
=d'ailleurs je te conseille fortement de ne plus travailler que comme ça.
si ton fichier est fait "a la mano" enregistre le direct en UTF-8 (ou si tu peux pas le faire avec ton editeur, change d'éditeur)
si tu est obligé d'utiliser ce fichier la et pas un autre (sans vouloir un autre parser que simplexml) alors la fonction uft8_encode est ton amie
http://fr2.php.net/manual/fr/function.utf8-encode.php

lavercq

Merci pour ta réponse et donc pour ton aide.
Je viens seulement de découvrir ta réponse.
C'est dommage que l'on ne soit pas avisé des réponses...
Je vais de ce pas essayer ta première solution.
J'ai téléchargé un autre éditeur.
Jusqu'ici j'utilisais Cute Html, je vais essayer NVU...
Si ça ne marche pas, il faudrait m'expliquer comment placer utf8_encode dans le script.
Dans le fichier Php,je suppose juste avant l'emploi de simplexml_load_file...?

à te lire prochainement, avec mes remerciements renouvelés, et bien cordialement.
:idea:

bast2
C'est dommage que l'on ne soit pas avisé des réponses...

Il te suffit pour cela de mettre l'option "Toujours m'avertir des réponses" sur oui dans ton profil.

fredericmazue

Ou de cocher la case au moment de la rédaction du message :)

lavercq
Vous avez dit simple :'simplexml_load_file"....?

J'ai ajouté une ligne comme conseillé, avec 'utf8_encode' :
$articlFile=utf8_encode($fileDir . $file);
$articleFile = simplexml_load_file($articlFile);

Je n'ai plus le warning, mais les lettres accentuées sont transformées...ainsi le mot :
été devient : été
le mot ça devient :ça

Et, en plus,j'ai mis cette entête à mon fichier xml :
<?xml version="1.0" encoding="utf-8"?>

Que faut-il faire ?
Vous avez dit 'simplexml'...?

cyruss

Tu as fait un utf8_decode() sur ton texte ?

Je te conseille PHP 5 avancé ou tout cela est tres bien expliqué ;)

http://www.amazon.fr/PHP-5-avanc%C3%A9-Eric-Daspet/dp/2212120044/

++

lavercq
simplexml_load_file
Tu as fait un utf8_decode() sur ton texte ?

Non, pas sur le texte...le texte se trouvant dans un fichier xml...
Il n'est possible de faire ('encode' ou 'decode') que dans le fichier php...!
d'ailleurs lequel faut-il faire, encode ou decode...?

$articlFile=utf8_encode($fileDir . $file);
$articleFile = simplexml_load_file($articlFile);
ou bien:
$articlFile=utf8_decode($fileDir . $file);
$articleFile = simplexml_load_file($articlFile);

sachant que j'ai mis ceci en tête de mon fichier xml :
<?xml version="1.0" encoding="utf-8"?>

Merci cyruss,pour l'adresse que tu m'indique,je vais aller visiter ça de ce pas.

bast2
Re: simplexml_load_file
d'ailleurs lequel faut-il faire, encode ou decode...?

decode pour l'affichage