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
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
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:
Il te suffit pour cela de mettre l'option "Toujours m'avertir des réponses" sur oui dans ton profil.
Ou de cocher la case au moment de la rédaction du message :)
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'...?
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/
++
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.
decode pour l'affichage