Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

encode xml et utf-8

3 réponses
Avatar
Olivier LEMOINE
j'ai un fichier xml simple :

<?xml version="1.0" encoding="ISO-8859-15"?>
<personnes>
<personne>
<nom>BIDON</nom>
<prenom>André</prenom>
</personne>
<personne>
<nom>TRUC</nom>
<prenom>René</prenom>
</personne>
</personnes>

et dans la récupération de ce fichier via simple_xml_file(),
je récupère des valeurs que je suis obligé d'encoder avec la
fonction utf8_encode()
ça marche mais pourtant, j'ai demandé à la page html de "causer"
ISO-8859-15 via une commande meta ...

3 réponses

Avatar
Olivier Miakinen

j'ai un fichier xml simple :

<?xml version="1.0" encoding="ISO-8859-15"?>
<personnes>
[...]
</personnes>

et dans la récupération de ce fichier via simple_xml_file(),


Je n'ai pas trouvé cette fonction dans la doc. Peut-être
simplexml_load_file() ?

Quoi qu'il en soit, je ne vois aucun moyen de préciser l'encodage du
fichier. Tu crois que cette fonction serait assez maligne pour lire le
paramètre 'encoding' et faire un iconv à la volée ?

je récupère des valeurs que je suis obligé d'encoder avec la
fonction utf8_encode()


C'est l'inverse, non ? Ton fichier est encodé comment ? Par ailleurs,
note que utf8_encode fait le mapping depuis iso-8859-1, il ne connaît
pas iso-8859-15.

ça marche mais pourtant, j'ai demandé à la page html de "causer"
ISO-8859-15 via une commande meta ...


Bon, de toutes façons, si iso-8859-15 se comprend pour le courriel et
les news à cause du grand nombre de logiciels qui ont du mal avec les
encodages sur plusieurs octets, pour le web c'est le contraire :
utf-8 est plus ancien et beaucoup plus universellement reconnu que
iso-8859-15. Comme de plus utf-8 permet de coder l'intégralité des
iso-8859-X, il n'y a pas de raison d'utiliser autre chose.

Avatar
Mark
Olivier LEMOINE wrote:

j'ai un fichier xml simple :

<?xml version="1.0" encoding="ISO-8859-15"?>
<personnes>
<personne>
<nom>BIDON</nom>
<prenom>André</prenom>
</personne>
<personne>
<nom>TRUC</nom>
<prenom>René</prenom>
</personne>
</personnes>

et dans la récupération de ce fichier via simple_xml_file(),
je récupère des valeurs que je suis obligé d'encoder avec la
fonction utf8_encode()


utf8_encode est pour encoder les donnes en utf-8 -- si vous voulez decoder
les donnes en charset iso8859-1, vous pouvez utiliser ut8_decode. Mais
seulement pour ISO-8859-1. Si vous voulez 8859-15, vouz pouvez essayer:

iconv("utf-8", "iso-8859-15", $nodeval);


je n'ai jamais utilise les API simplexml, et je ne said comment ils
marchent avec les charsets. je sais que le nouveau DOM marche tres bien
avec les charsets divers ....

bonne chance!

marc.


--
I am not an ANGRY man. Remove the rage from my email to reply.

Avatar
loufoque
Olivier LEMOINE a dit le 30/01/2005 14:55:

et dans la récupération de ce fichier via simple_xml_file(),
je récupère des valeurs que je suis obligé d'encoder avec la
fonction utf8_encode()


Les résultats retournés par SimpleXML sont en UTF-8, et ceci quel que
soit l'encodage de départ.
On peut effectivement faire un utf8_decode (et pas encode) pour passer
en ISO-8859-1 au besoin.