J'ai un probleme que je vais essayer de vous expliquer :
j'ai un script perl qui doit lire des fichiers XML avec XML::Simple.
J'ai remarqu=E9 (apr=E8s au moins 2 heures de tests !!) que ces fichiers XML
doivent imp=E9rativement =EAtre encod=E9 en UTF-8 : cela signifie que :
- au d=E9but du fichier xml, je doit mettre <?xml version=3D"1.0"
encoding=3D"UTF-8"?>
- et aussi : le fichier doit =EAtre enregistr=E9 avec un encodage UTF-8
Or, mon probl=E8me est que je peut cr=E9er un fichier encod=E9 UTF-8 (avec
gedit, sous linux) et mon script fonctionne. Mais le script Perl doit
modifier le fichier et donc le r=E9=E9crir, et c'est l=E0 que le fichier es=
t =E9
crit avec un encodage : ISO-8859-15 (surement l'encodage de Perl).
Je pr=E9sice que le fichier =E9crit par le script contient bien la ligne au
d=E9but du fichier : <?xml version=3D"1.0"
encoding=3D"UTF-8"?>
Donc,
- Comment forcer le script =E0 cr=E9er des fichier en "vrai" UTF-8 ?
- Pourquoi mon script ne fonctionne que si le fichier XML est en UTF-8 ?
- Pourquoi j'ai mis plus de 2 heures =E0 trouver ce pseudo-bug ? :-(
J'esp=E8re avoir =E9t=E9 assez clair. merci de votre aide.
- Comment forcer le script à créer des fichier en "vrai" UTF-8 ?
binmode $filehandle, ":utf8";
juste après l'ouverture du fichier devrait faire l'affaire. Mais je ne sais pas à quel point XML::Simple va se comporter correctement dans ce cas.
Paul
Bonjour,
je viens de voir que ce n'est pas seulement un problème d'encodage, mais là, je comprends rien, je vous joint un extrait de mon script, si quelqu'un peut l'essayer, et me dire ce qui ne va pas.
théoriquement, je souhaite que le script m'affiche :
"2 item(s) http://www.site2.com/?toto&tata &"
mais je n'ai pas du tout cela, et ca fait plusieurs heures que je me penche dessus (meme la nuit qui est sensée porter conseille ne marche pas !)
Merci de votre soutien.
fichier "test.pl" :
#!/usr/bin/perl use XML::Simple;
my $xmlReportUrl = new XML::Simple(); my $xmlReportContent = $xmlReportUrl->XMLin("./test.xml", forcearray=>1); $myItemsXml = $xmlReportContent->{'channel'}->[0]->{'item'};
je viens de voir que ce n'est pas seulement un problème d'encodage, mais
là, je comprends rien, je vous joint un extrait de mon script, si
quelqu'un peut l'essayer, et me dire ce qui ne va pas.
théoriquement, je souhaite que le script m'affiche :
mais je n'ai pas du tout cela, et ca fait plusieurs heures que je me
penche dessus (meme la nuit qui est sensée porter conseille ne marche
pas !)
Merci de votre soutien.
fichier "test.pl" :
#!/usr/bin/perl
use XML::Simple;
my $xmlReportUrl = new XML::Simple();
my $xmlReportContent = $xmlReportUrl->XMLin("./test.xml",
forcearray=>1); $myItemsXml =
$xmlReportContent->{'channel'}->[0]->{'item'};
je viens de voir que ce n'est pas seulement un problème d'encodage, mais là, je comprends rien, je vous joint un extrait de mon script, si quelqu'un peut l'essayer, et me dire ce qui ne va pas.
théoriquement, je souhaite que le script m'affiche :
"2 item(s) http://www.site2.com/?toto&tata &"
mais je n'ai pas du tout cela, et ca fait plusieurs heures que je me penche dessus (meme la nuit qui est sensée porter conseille ne marche pas !)
Merci de votre soutien.
fichier "test.pl" :
#!/usr/bin/perl use XML::Simple;
my $xmlReportUrl = new XML::Simple(); my $xmlReportContent = $xmlReportUrl->XMLin("./test.xml", forcearray=>1); $myItemsXml = $xmlReportContent->{'channel'}->[0]->{'item'};
Ca le fait chez moi, à condition que les & soient bien des & (et amp point-virgule).
Je test ce soir avec des & mais c'est fort prpobable que ce soit cela qui posait des problemes ! merci en tout cas de ton aide
Et ça fait quoi? Elle quelle version de perl tu utilises? et bien, justement, mon script perl me dis que la balise "link"
contient tous le reste du fichier xml : effectivement ce doit etre a cause &.
Pour la version de perl, je saisa pas trop, jsuis pas chez moi... :)
Paul
bon, et biien, je viens de tester, ca fonctionne parfaitement, donc mon probleme n'ét(ait pas un probleme de perl mais un probleme de xml. Merci de ton aide Jacques.
PS : This is perl, v5.8.5 built for i386-linux-thread-multi
Le Wed, 30 Mar 2005 00:15:03 +0200 "Jacques Caron" vous écriviez :
Salut,
On Tue, 29 Mar 2005 15:43:11 +0200, Paul <ernond_paul_at_yahoo.fr> wrote:
théoriquement, je souhaite que le script m'affiche :
"2 item(s) http://www.site2.com/?toto&tata &"
Ca le fait chez moi, à condition que les & soient bien des & (et amp
point-virgule).
mais je n'ai pas du tout cela, et ca fait plusieurs heures que je me penche dessus (meme la nuit qui est sensée porter conseille ne marche
pas !)
Et ça fait quoi? Elle quelle version de perl tu utilises?
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/
bon, et biien, je viens de tester, ca fonctionne parfaitement, donc mon
probleme n'ét(ait pas un probleme de perl mais un probleme de xml.
Merci de ton aide Jacques.
PS : This is perl, v5.8.5 built for i386-linux-thread-multi
Le Wed, 30 Mar 2005 00:15:03 +0200
"Jacques Caron" <jc@imfeurope.com> vous écriviez :
Salut,
On Tue, 29 Mar 2005 15:43:11 +0200, Paul <ernond_paul_at_yahoo.fr>
wrote:
théoriquement, je souhaite que le script m'affiche :
bon, et biien, je viens de tester, ca fonctionne parfaitement, donc mon probleme n'ét(ait pas un probleme de perl mais un probleme de xml. Merci de ton aide Jacques.
PS : This is perl, v5.8.5 built for i386-linux-thread-multi
Le Wed, 30 Mar 2005 00:15:03 +0200 "Jacques Caron" vous écriviez :
Salut,
On Tue, 29 Mar 2005 15:43:11 +0200, Paul <ernond_paul_at_yahoo.fr> wrote:
théoriquement, je souhaite que le script m'affiche :
"2 item(s) http://www.site2.com/?toto&tata &"
Ca le fait chez moi, à condition que les & soient bien des & (et amp
point-virgule).
mais je n'ai pas du tout cela, et ca fait plusieurs heures que je me penche dessus (meme la nuit qui est sensée porter conseille ne marche
pas !)
Et ça fait quoi? Elle quelle version de perl tu utilises?
Jacques. -- Interactive Media Factory Création, développement et hébergement de services interactifs: SMS, SMS+, Audiotel... http://www.imfeurope.com/