Lecture XML via simplexml_load_file() génère une erreur "Input is not proper UTF

Résolu
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014 - 30 mars 2009 à 11:35
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 13 mai 2009 à 18:57
Bonjour @ toutezéatous,

J'ai un petit pb lorsque j'essaie de lire un fichier XML qui m'est transmis par un prestataire. C'est ma première expérience de manipulation de XML, c'est la raison pour laquelle je suis assez ignorante en la matière...

Voila ce ui se passe : lorsque j'essaie de lire le fichier XML sur ma page php via une simple instruction $xml = simplexml_load_file('../media/liste.xml'); j'ai le message suivant :

Warning : simplexml_load_file() [function.simplexml-load-file]<wbr>: media/liste.xml:4: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xF4 0x6E 0x65 0x22 in...

Pourtant l'en-tête du fichier est bien :
<?xml version ="1.0" encoding="UTF-8" ?>

Ce même fichier est lu dans une animation flash, mais il s'arrête à la lecture du 1er noeud.

En
revanche, si je l'ouvre via un éditeur (dream en l'occurrence), que je le modifie et que je
l'enregistre à l'identique tout rentre dans l'ordre (dans php et dans flash)...

Ce que j'ai pu constater en ouvrant les fichiers avec nodepad++ c'est que les formats des fichiers ne sont pas les mêmes :

- Le XML original a un format UNIX - ANSI

- Le XML une fois modifié a un format Dos/Windows - ANSI as UTF-8

A mon avis, le problème vient de ce format, ce qui corroborerait le message d'erreur php "Input is not a proper UTF-8", mais avant de renvoyer l'info au prestataire qui me fournit le fichier, je souhaiterais avoir votre avis...

Le fait que ce soit UNIX ou Dos/Windows est lié à la machine sur laquelle le fichier est généré ?
A mon avis le pb vient plus du ANSI que du UNIX... Qu'en pensez-vous ?
Pensez-vous que lors de la génération du fichier XML, le prestataire peut "forcer" le formatage du fichier à du "vrai" UTF-8 ?

Est-ce que de mon côté je pourrais l'ouvrir autrement pour ne pas rencontrer le pb ?

J'avais prévenu que mes questions seraient assez basiques ;o))

Merci et excellente journée @ toutezéatous,</wbr>

4 réponses

karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014
31 mars 2009 à 15:36
Le pb a été résolu lorsque le pb de l'encoding des accents ont été réglés !

Excellente journée @ toutezéatous !
3
freelance28 Messages postés 3 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 4 novembre 2022
13 mai 2009 à 15:45
Bonjour

J'ai le même pb que toi : on me transfère un fichier xml : j'ai la même erreur xml que toi
Quand j'enlève les accents, plus d'erreur mon traitement se passe bien.
Comment as-tu fait pour régler l'encoding des accents stp ?

Merci d'avance !
0
karpediem Messages postés 49 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 22 septembre 2014
13 mai 2009 à 18:24
Bonjour,

En fait moi je n'ai rien résolu ;o))

J'ai remonté l'info au prestataire qui avait en charge de générer les fichiers XML et il a corrigé. En revanche, je ne sais pas comment il a fait. Ce qui est clair c'est que le pb venait de lui et qu'il a fait le nécessaire puisque c'était de SA responsabilité...

Qui te fourni les XML ? Tu ne peux pas lui remonter l'info ?

@ +
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
13 mai 2009 à 18:57
Salut,

A mon avis il a tout simplement encodé le fichier correctement, donc en UTF-8 format DOS/WINDOWS

En espèrant ne pas dire de conneries :
Le fait que ce soit UNIX ou Dos/Windows est lié à la machine sur laquelle le fichier est généré ?
= >
Par défaut oui, mais il est très simple de le modifier.

A mon avis le pb vient plus du ANSI que du UNIX... Qu'en pensez-vous ?
=>
Oui, sans aucun doute. C'est un problème d'encodage, pas de format de fichier (DOS, MAC, UNIX)

Pensez-vous que lors de la génération du fichier XML, le prestataire peut "forcer" le formatage du fichier à du "vrai" UTF-8 ?
= >
Bien sur, la preuve, il l'a fait

Est-ce que de mon côté je pourrais l'ouvrir autrement pour ne pas rencontrer le pb ?
=>
Bien sur (bis), en utilisant par exemple mb_string ou iconv.

@freelance :
La meilleure solution reste la fourniture d'un fichier conforme à ton utilisation, mais tu peux très bien changer son encodage soit par la balise soit en utilisant les fonctions sus citées.

Cordialement,

Kohntark -
0
Rejoignez-nous