Pb accents - parser xml avec php
Fermé
remoh
Messages postés
6
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
14 décembre 2007
-
14 déc. 2007 à 12:20
lesteph - 29 nov. 2010 à 16:52
lesteph - 29 nov. 2010 à 16:52
A voir également:
- Pb accents - parser xml avec php
- Xml download - Télécharger - Édition & Programmation
- E avec accent - Guide
- Easy php - Télécharger - Divers Web & Internet
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
5 réponses
la_lutine
Messages postés
20
Date d'inscription
mercredi 10 octobre 2007
Statut
Membre
Dernière intervention
20 juillet 2010
15
3 juin 2008 à 15:22
3 juin 2008 à 15:22
Bonjour !
Peut-être que je répond à côté de la plaque, mais moi je fais un utf8_decode() sur les valeurs que je récupère de mon xml. Et mon XML est en <?xml version="1.0" encoding="ISO-8859-1"?>.
La Lutine
Peut-être que je répond à côté de la plaque, mais moi je fais un utf8_decode() sur les valeurs que je récupère de mon xml. Et mon XML est en <?xml version="1.0" encoding="ISO-8859-1"?>.
La Lutine
Bussy14
Messages postés
45
Date d'inscription
dimanche 29 octobre 2006
Statut
Membre
Dernière intervention
4 avril 2013
5
30 mai 2008 à 18:06
30 mai 2008 à 18:06
Bonjour à tous!
Après quelques recherches, j'ai trouvé par hasard une solution dans les commentaires de la page qui décrit la fonction php utf8_encode():
https://www.php.net/manual/en/function.utf8-encode.php#23926
Il s'agit donc de mettre <![CDATA[votre_string]]> dans le fichier XML.
ex: mon fichier XML est encodé en iso-8859-1, et pour chaque accent, xml_parser coupait le mot en 2.
Don en transformant la chaîne:
Si le fichier XML est généré automatiquement, il est donc possible de rajouter '<![CDATA[' et ']]>' autour de chaque valeur.
Le résultat n'est pas forcément très beau, mais qu'est-ce que vous voulez, l'affichage est fonctionnel!
P.S: Si vous voyez des sources d'erreurs possibles avec cette solution, ou en avez une autre, je serais curieux d'en entendre parler!
Bonne programmation!
Après quelques recherches, j'ai trouvé par hasard une solution dans les commentaires de la page qui décrit la fonction php utf8_encode():
https://www.php.net/manual/en/function.utf8-encode.php#23926
Il s'agit donc de mettre <![CDATA[votre_string]]> dans le fichier XML.
ex: mon fichier XML est encodé en iso-8859-1, et pour chaque accent, xml_parser coupait le mot en 2.
Don en transformant la chaîne:
<balise>String accentuée</balise>par:
<balise><![CDATA[String accentuée]]></balise>l'erreur n'est plus!
Si le fichier XML est généré automatiquement, il est donc possible de rajouter '<![CDATA[' et ']]>' autour de chaque valeur.
Le résultat n'est pas forcément très beau, mais qu'est-ce que vous voulez, l'affichage est fonctionnel!
P.S: Si vous voyez des sources d'erreurs possibles avec cette solution, ou en avez une autre, je serais curieux d'en entendre parler!
Bonne programmation!
remoh
Messages postés
6
Date d'inscription
vendredi 19 octobre 2007
Statut
Membre
Dernière intervention
14 décembre 2007
14 déc. 2007 à 13:21
14 déc. 2007 à 13:21
Voila un extrait du résultat généré par me parser php :
THEATRE DE L'OEUVRE
PARIS
L'ENTRETIEN DE M. DESCARTES
éâtre contemporain // Au lieu de Théâtre ???
http://www.carrefourspectacles.com/goManifestation.do?codman=DESCA
10/10/2007
31/12/2007
OPERA MUNICIPAL
MARSEILLE
MOZART - SCHUMANN - BEETHOVEN
éra // Au lieu de Classique - Lyrique - Opéra ???
http://www.carrefourspectacles.com/goManifestation.do?codman=CON29
29/03/2008
29/03/2008
Merci de votre aide
THEATRE DE L'OEUVRE
PARIS
L'ENTRETIEN DE M. DESCARTES
éâtre contemporain // Au lieu de Théâtre ???
http://www.carrefourspectacles.com/goManifestation.do?codman=DESCA
10/10/2007
31/12/2007
OPERA MUNICIPAL
MARSEILLE
MOZART - SCHUMANN - BEETHOVEN
éra // Au lieu de Classique - Lyrique - Opéra ???
http://www.carrefourspectacles.com/goManifestation.do?codman=CON29
29/03/2008
29/03/2008
Merci de votre aide
Ildwen
Messages postés
1
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
27 décembre 2007
27 déc. 2007 à 16:48
27 déc. 2007 à 16:48
Bonjour,
J'ai exactement le même problème.
Sous php4 tout fonctionnait parfaitement. Mais j'ai voulu passer mon application sous php5 et là ca ne fonctionne plus. Toutes les lettres avant les accents disparaissent. Quelqu'un a-t-il une idée?
D'avance merci
J'ai exactement le même problème.
Sous php4 tout fonctionnait parfaitement. Mais j'ai voulu passer mon application sous php5 et là ca ne fonctionne plus. Toutes les lettres avant les accents disparaissent. Quelqu'un a-t-il une idée?
D'avance merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut à tous, j'ai exactement le même problème.
J'ai tenté avec la bibliothèque PEAR XML_Parser, aucune différence.
J'ai tenté ensuite avec la fonction Simple_XML intégrée dans PHP5 mais ça m'oblige à recoder toutes les classes....la misère, si quelqu'un a une solution, je suis preneur...
Merci
J'ai tenté avec la bibliothèque PEAR XML_Parser, aucune différence.
J'ai tenté ensuite avec la fonction Simple_XML intégrée dans PHP5 mais ça m'oblige à recoder toutes les classes....la misère, si quelqu'un a une solution, je suis preneur...
Merci
Bonjour,
j'utilise des fichier xml tels que :
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss>
<channel>
<item id="1">
<title>Produits de la mer</title>
<pubDate>Wed, 31 Oct 2007 11:01:47 GMT</pubDate>
<image>image/products/1.jpg</image>
<description><![CDATA[<span class='product'>Ceci est un test ! Je préfère cela et il n'est pas prêt à nous le dire...</span>]]></description>
</item>
</channel>
</rss>
que ce soit en UTF-8 ou pas, c'est pareil !
les accents s'affichent mal ou pas du tout !
Que faire je sèche...?
j'utilise des fichier xml tels que :
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss>
<channel>
<item id="1">
<title>Produits de la mer</title>
<pubDate>Wed, 31 Oct 2007 11:01:47 GMT</pubDate>
<image>image/products/1.jpg</image>
<description><![CDATA[<span class='product'>Ceci est un test ! Je préfère cela et il n'est pas prêt à nous le dire...</span>]]></description>
</item>
</channel>
</rss>
que ce soit en UTF-8 ou pas, c'est pareil !
les accents s'affichent mal ou pas du tout !
Que faire je sèche...?
3 juin 2008 à 15:29
Pour être capable de lire les accents dans le fichier XML il a besoin de faire un <![CDATA[...]]>, mais une fois les accents lus, pour les afficher comme faut, il faut utiliser utf8_decode() malgrès le fait qu'on soit en ISO-8859-1
4 sept. 2008 à 13:44
MERCI MILLE FOIS!
En effet tu avais raison pour le utf8_decode() et contrairement à bussy 14 message precedent je n'utilise pas du tout !CDATA dans mon XML!! :D ;, apres 1000 et 1 recherches : j'utilise donc dans ma fonction de traitement des caracteres intra balises :
function char($parser,$data) {
global $balise_ouv;
global $n;
global $tab;
$tab[$n][$balise_ouv].=utf8_decode($data);
// echo $data . " ";
}
en header de mon parser.php je mets : header('Content-Type: text/xml; charset=ISO-8859-1');
en tete de mon fichier xml je fous : <?xml version="1.0" encoding="iso-8859-1"?>
Et envoie la sauce mon coco!! ID ID ID
Ouf!! :D
6 mars 2009 à 00:52
// Fonction associée à l'événement données textuelles
function characterData($parser, $data)
{
global $globaldata;
if ($globaldata != "")
{
$globaldata = $globaldata . $data;
}
else
{
$globaldata = $data;
}
// echo "<font color=red>".$data."</font><br>";
}
et à la fin de votre fonction associée à l'événement fin d'élément
function endElement($parser, $name)
il faut finir par l'instruction $globaldata = "";
à savoir :
function endElement($parser, $name)
{
...
$globaldata = "";
}
et voilà !
lors du traitement des noeuds :
<N1> contenu quelconque </N1>
<N2> contenu é avec à â accent(s) </N2>
la lecture de N2 n'affichera plus seulement "â accent(s)", mais la concaténation de "contenu "+"é avec "+"à "+â accent(s)"
hope it'll help you ='D