8797 sujets

Développement web côté serveur, CMS

Salut à tous,

J'utilise la class XMLReader de php5 pour extraire des donnée d'un flux xml qui est encodé en iso-8859-1.

Mais le résultat que j'obtiens pour un "é" est comme ceci :

é


Comment faire pour qu'il me sorte un "é" normal ?

J'ai essayé de lui mettre une condition à l'ouverture du fichier, mais ça ne fait rien du tout Smiley decu

$reader = new XMLReader();
$reader->open("xml/malaria-stats-user.xml", "iso-8859-1");
C'est une version 5.2.6 que j'ai. Smiley smile

Voici un exemple de ce que ça me donne :

a écrit :

manu le médecin

* Pays : France
* ID : 16191
* CPID : 6e2e5060e2d657e0bc5d15e9d618f800
* Date d'inscription : 1199309869
* Crédit Total : 502.333168
* Crédit Moyen : 0.086241
* Crédit Total : 502.333168
* Lien web :
* ID équipe : 845


Modifié par Super_baloo8 (12 Nov 2008 - 21:49)
Je n'y arrive toujours pas, et j'ai aucune idée de comment je peux faire, j'ai essayer la méthode pas belle de remplacer les caractères, (str_replace) mais sans succès, car à voir ce ne sont pas les bon caractères que je dois remplacer, ou soit je me trompe quelques part ... Smiley decu
Oui pas de soucis, je ne met que deux entrées Smiley cligne


<?xml version="1.0" encoding="iso-8859-1"?>
<users>
<user>
 <id>16190</id>
 <name>Stephan Lubach</name>
 <country>International</country>
 <create_time>1199309861</create_time>
 <total_credit>4254.048060</total_credit>
 <expavg_credit>0.094547</expavg_credit>
 <expavg_time>1217597995.647850</expavg_time>
 <cpid>75856a92df65b5e9274487b9cb4ab957</cpid>
</user>
<user>
 <id>16191</id>
 <name>manu le m&#195;&#169;decin</name>
 <country>France</country>
 <create_time>1199309869</create_time>
 <total_credit>502.333168</total_credit>
 <expavg_credit>0.086241</expavg_credit>
 <expavg_time>1222082961.232180</expavg_time>
 <cpid>6e2e5060e2d657e0bc5d15e9d618f800</cpid>
 <teamid>845</teamid>
</user>
</users>

Modifié par Super_baloo8 (14 Nov 2008 - 15:06)
Bon j'ai enfin eu le temps de jeter un oeil.

Ce que j'arrive à faire :
En utilisant ton xml source posté ici et modifié comme ci-après et un fichier test.xml vraiment encodé en utf-8

<?xml version="1.0" [#red]encoding="utf-8"[/#]?>
<users>
<user>
 <id>16191</id>
 <name>manu le m[#red]é[/#]decin</name>
 <country>France</country>
 <create_time>1199309869</create_time>

 <total_credit>502.333168</total_credit>

 <expavg_credit>0.086241</expavg_credit>

 <expavg_time>1222082961.232180</expavg_time>

 <cpid>6e2e5060e2d657e0bc5d15e9d618f800</cpid>

 <teamid>845</teamid>

</user>
</users>


et le code php suivant

<?php
$reader = new XMLReader();
$reader->open("test.xml", "UTF-8");

echo '<lecture>';
while ($reader->read())
{
$valeur = $reader->value;
echo utf8_decode($valeur)."<br>";
}
echo '</lecture>';
$reader->close(); 

?>

Je retrouve bien le é.

Question comment est généré le xml pour arriver à encoder un é en &#195;&#169; (à priori de l'unicode sur 2 octets ??) ?
Est-ce vraiment de l'iso-8859-1 ?
Merci pour ta réponse Smiley cligne

Je fichier XML ce n'est pas moi qui le génère bien malheureusement Smiley decu

Je ne sais pas du tout comment c'est encodé finalement maintenant ...