Si je vous dis que j'ai un autre probl=E8me, vous me croyez ? :-)
Bon, cette fois ci, cela concerne Perl et xml.
En fait, parfois j'ai des fichiers xml qui contiennent le caract=E8re
', (un genre d'apostrophe, ou plut=F4t : une virgule en haut) mais le
parseur XML de Perl (XML::Simple) n'accepte pas du tout cela et fait
"tout planter".
Sachant que ces contenus xml sont des fils RSS et que je n'ai donc pas
la possibilit=E9 de les g=E9rer, comment dois-je m'y prendre pour =E9viter
ce probl=E8me ?
À (at) 30 Nov 2005 07:02:24 -0800, "Paul" écrivait (wrote):
Bon, cette fois ci, cela concerne Perl et xml. En fait, parfois j'ai des fichiers xml qui contiennent le caractère ', (un genre d'apostrophe, ou plutôt : une virgule en haut) mais le parseur XML de Perl (XML::Simple) n'accepte pas du tout cela et fait "tout planter".
À première vue, cela ressemble à un problème d'encodage. Êtes-vous sûr que le codage que vous déclarez en entrée correspond à celui du document (normalement c'est détecté automagiquement puisque déclaré au début du fichier XML) et que votre codage de sortie autorise ce caractère ?
Que voulez-vous dire par "XML::Simple fait tout planter" ? Perl s'arrête brutalement ou c'est XML::Simple qui génère une erreur ? Dans tous les cas, quel est le message d'erreur ?
Sachant que ces contenus xml sont des fils RSS et que je n'ai donc pas la possibilité de les gérer, comment dois-je m'y prendre pour éviter ce problème ?
Indiquez-nous un exemple de fil RSS qui présente ce problème...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 30 Nov 2005 07:02:24 -0800,
"Paul" <ernond_paul@yahoo.fr> écrivait (wrote):
Bon, cette fois ci, cela concerne Perl et xml.
En fait, parfois j'ai des fichiers xml qui contiennent le caractère
', (un genre d'apostrophe, ou plutôt : une virgule en haut) mais le
parseur XML de Perl (XML::Simple) n'accepte pas du tout cela et fait
"tout planter".
À première vue, cela ressemble à un problème d'encodage. Êtes-vous sûr
que le codage que vous déclarez en entrée correspond à celui du
document (normalement c'est détecté automagiquement puisque déclaré au
début du fichier XML) et que votre codage de sortie autorise ce
caractère ?
Que voulez-vous dire par "XML::Simple fait tout planter" ? Perl
s'arrête brutalement ou c'est XML::Simple qui génère une erreur ? Dans
tous les cas, quel est le message d'erreur ?
Sachant que ces contenus xml sont des fils RSS et que je n'ai donc pas
la possibilité de les gérer, comment dois-je m'y prendre pour éviter
ce problème ?
Indiquez-nous un exemple de fil RSS qui présente ce problème...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 30 Nov 2005 07:02:24 -0800, "Paul" écrivait (wrote):
Bon, cette fois ci, cela concerne Perl et xml. En fait, parfois j'ai des fichiers xml qui contiennent le caractère ', (un genre d'apostrophe, ou plutôt : une virgule en haut) mais le parseur XML de Perl (XML::Simple) n'accepte pas du tout cela et fait "tout planter".
À première vue, cela ressemble à un problème d'encodage. Êtes-vous sûr que le codage que vous déclarez en entrée correspond à celui du document (normalement c'est détecté automagiquement puisque déclaré au début du fichier XML) et que votre codage de sortie autorise ce caractère ?
Que voulez-vous dire par "XML::Simple fait tout planter" ? Perl s'arrête brutalement ou c'est XML::Simple qui génère une erreur ? Dans tous les cas, quel est le message d'erreur ?
Sachant que ces contenus xml sont des fils RSS et que je n'ai donc pas la possibilité de les gérer, comment dois-je m'y prendre pour éviter ce problème ?
Indiquez-nous un exemple de fil RSS qui présente ce problème...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Paul
Ah, ben, oui, ca doit être cela le problème... car moi, je fais tout en UTF-8 et le RSS est en ISO-8859-1 exemple : http://www.internetactu.net/wp-rss2.php
Bon, on à le problème, maintenant, reste à trouver la solution, parce que, moi, c'est pas automagique : il n'a pas l'aire de détecter que c'est de l'iso, et comme je force l'écriture de mes fichiers en utf-8 : il aime pas...
Je fais comme ceci : open (FichierLocal, ">>UTF-8", $file);
Donc, pour résumer, et si je comprends bien : il faudrait que mon script encode le fil RSS en utf-8 et ensuite je pourrais écrire mes propres xml en local en utf-8 ?
Merci
Ah, ben, oui, ca doit être cela le problème... car moi, je fais tout
en UTF-8 et le RSS est en ISO-8859-1
exemple :
http://www.internetactu.net/wp-rss2.php
Bon, on à le problème, maintenant, reste à trouver la solution,
parce que, moi, c'est pas automagique : il n'a pas l'aire de détecter
que c'est de l'iso, et comme je force l'écriture de mes fichiers en
utf-8 : il aime pas...
Je fais comme ceci :
open (FichierLocal, ">>UTF-8", $file);
Donc, pour résumer, et si je comprends bien :
il faudrait que mon script encode le fil RSS en utf-8 et ensuite je
pourrais écrire mes propres xml en local en utf-8 ?
Ah, ben, oui, ca doit être cela le problème... car moi, je fais tout en UTF-8 et le RSS est en ISO-8859-1 exemple : http://www.internetactu.net/wp-rss2.php
Bon, on à le problème, maintenant, reste à trouver la solution, parce que, moi, c'est pas automagique : il n'a pas l'aire de détecter que c'est de l'iso, et comme je force l'écriture de mes fichiers en utf-8 : il aime pas...
Je fais comme ceci : open (FichierLocal, ">>UTF-8", $file);
Donc, pour résumer, et si je comprends bien : il faudrait que mon script encode le fil RSS en utf-8 et ensuite je pourrais écrire mes propres xml en local en utf-8 ?
Merci
Michel Rodriguez
Paul wrote:
Ah, ben, oui, ca doit être cela le problème... car moi, je fais tout en UTF-8 et le RSS est en ISO-8859-1 exemple : http://www.internetactu.net/wp-rss2.php
Bon, on à le problème, maintenant, reste à trouver la solution, parce que, moi, c'est pas automagique : il n'a pas l'aire de détecter que c'est de l'iso, et comme je force l'écriture de mes fichiers en utf-8 : il aime pas...
Je fais comme ceci : open (FichierLocal, ">>UTF-8", $file);
Donc, pour résumer, et si je comprends bien : il faudrait que mon script encode le fil RSS en utf-8 et ensuite je pourrais écrire mes propres xml en local en utf-8 ?
Bon, je me rapelle plus du de l'encodage par default de RSS, mais en tout cas, en HTML c'est ISO-8859-1, donc le RSS doit etre OK en fait.
Mais bon, le parser XML de XML::Simple (ou n'importe quel autre d'ailleurs), lui, prends un entree par default en UTF-8 (ou 16 si ca ressemble a de l'UTF-16).
Tu as plusieurs options:
- convertir ton ISO-8859-1 en UTF-8 avant de le traiter, iconv fait ca, ou tu peux peut-etre ouvrir le fichier en precisant qu'il est en ISO... et passer le filehandle a XML::Simple qui se debrouille (j'ai jamais essaye mais ca peut marcher),
- ajouter la declaration XML qui va bieng en tete de ton fichier, y compris a la volee, ou en chargeant le fichier et en le concatenant a la declaration (<?xml version="1.0" encoding="ISO-8859-1"?>)
- si tu te sents d'humeur aventureuse, et que tu utilise XML::Parser sous XML::Simple, ParserOpts peut t'aider
mais bon, je cite:
ParserOpts => [ XML::Parser Options ] # in - don't use this
Note: This option is now officially deprecated. If you find it useful, email the author with an example of what you use it for. Do not use this option to set the ProtocolEncoding, that's just plain wrong - fix the XML. (paragraphe souligné dans la doc!)
This option allows you to pass parameters to the constructor of the underlying XML::Parser object (which of course assumes you're not using SAX).
Voila,
Ca t'aide?
-- mirod
Paul wrote:
Ah, ben, oui, ca doit être cela le problème... car moi, je fais tout
en UTF-8 et le RSS est en ISO-8859-1
exemple :
http://www.internetactu.net/wp-rss2.php
Bon, on à le problème, maintenant, reste à trouver la solution,
parce que, moi, c'est pas automagique : il n'a pas l'aire de détecter
que c'est de l'iso, et comme je force l'écriture de mes fichiers en
utf-8 : il aime pas...
Je fais comme ceci :
open (FichierLocal, ">>UTF-8", $file);
Donc, pour résumer, et si je comprends bien :
il faudrait que mon script encode le fil RSS en utf-8 et ensuite je
pourrais écrire mes propres xml en local en utf-8 ?
Bon, je me rapelle plus du de l'encodage par default de RSS, mais en
tout cas, en HTML c'est ISO-8859-1, donc le RSS doit etre OK en fait.
Mais bon, le parser XML de XML::Simple (ou n'importe quel autre
d'ailleurs), lui, prends un entree par default en UTF-8 (ou 16 si ca
ressemble a de l'UTF-16).
Tu as plusieurs options:
- convertir ton ISO-8859-1 en UTF-8 avant de le traiter, iconv fait ca,
ou tu peux peut-etre ouvrir le fichier en precisant qu'il est en
ISO... et passer le filehandle a XML::Simple qui se debrouille (j'ai
jamais essaye mais ca peut marcher),
- ajouter la declaration XML qui va bieng en tete de ton fichier, y
compris a la volee, ou en chargeant le fichier et en le concatenant
a la declaration (<?xml version="1.0" encoding="ISO-8859-1"?>)
- si tu te sents d'humeur aventureuse, et que tu utilise XML::Parser
sous XML::Simple, ParserOpts peut t'aider
mais bon, je cite:
ParserOpts => [ XML::Parser Options ] # in - don't use this
Note: This option is now officially deprecated. If you find it
useful, email the author with an example of what you use it for.
Do not use this option to set the ProtocolEncoding, that's just
plain wrong - fix the XML. (paragraphe souligné dans la doc!)
This option allows you to pass parameters to the constructor of
the underlying XML::Parser object (which of course assumes you're
not using SAX).
Ah, ben, oui, ca doit être cela le problème... car moi, je fais tout en UTF-8 et le RSS est en ISO-8859-1 exemple : http://www.internetactu.net/wp-rss2.php
Bon, on à le problème, maintenant, reste à trouver la solution, parce que, moi, c'est pas automagique : il n'a pas l'aire de détecter que c'est de l'iso, et comme je force l'écriture de mes fichiers en utf-8 : il aime pas...
Je fais comme ceci : open (FichierLocal, ">>UTF-8", $file);
Donc, pour résumer, et si je comprends bien : il faudrait que mon script encode le fil RSS en utf-8 et ensuite je pourrais écrire mes propres xml en local en utf-8 ?
Bon, je me rapelle plus du de l'encodage par default de RSS, mais en tout cas, en HTML c'est ISO-8859-1, donc le RSS doit etre OK en fait.
Mais bon, le parser XML de XML::Simple (ou n'importe quel autre d'ailleurs), lui, prends un entree par default en UTF-8 (ou 16 si ca ressemble a de l'UTF-16).
Tu as plusieurs options:
- convertir ton ISO-8859-1 en UTF-8 avant de le traiter, iconv fait ca, ou tu peux peut-etre ouvrir le fichier en precisant qu'il est en ISO... et passer le filehandle a XML::Simple qui se debrouille (j'ai jamais essaye mais ca peut marcher),
- ajouter la declaration XML qui va bieng en tete de ton fichier, y compris a la volee, ou en chargeant le fichier et en le concatenant a la declaration (<?xml version="1.0" encoding="ISO-8859-1"?>)
- si tu te sents d'humeur aventureuse, et que tu utilise XML::Parser sous XML::Simple, ParserOpts peut t'aider
mais bon, je cite:
ParserOpts => [ XML::Parser Options ] # in - don't use this
Note: This option is now officially deprecated. If you find it useful, email the author with an example of what you use it for. Do not use this option to set the ProtocolEncoding, that's just plain wrong - fix the XML. (paragraphe souligné dans la doc!)
This option allows you to pass parameters to the constructor of the underlying XML::Parser object (which of course assumes you're not using SAX).
Voila,
Ca t'aide?
-- mirod
Nicolas George
Michel Rodriguez wrote in message <438edf73$0$327$:
Bon, je me rapelle plus du de l'encodage par default de RSS, mais en tout cas, en HTML c'est ISO-8859-1, donc le RSS doit etre OK en fait.
Le XML a pour encodage par défaut UTF-8 (ou cette merde d'UTF-16 en présence d'une byte-order-mark). Le RSS est du XML.
Michel Rodriguez wrote in message
<438edf73$0$327$5fc30a8@news.tiscali.it>:
Bon, je me rapelle plus du de l'encodage par default de RSS, mais en
tout cas, en HTML c'est ISO-8859-1, donc le RSS doit etre OK en fait.
Le XML a pour encodage par défaut UTF-8 (ou cette merde d'UTF-16 en présence
d'une byte-order-mark). Le RSS est du XML.
Il est donc bien encodé en iso-8859-1. Tout cela est correct.
Le bug doit être ailleurs.
Peut-être que la "virgule en l'air" cité dans le sujet
est l'apostrophe à-la-windows, qui ne fait pas parti de l'iso8859-1 ?
--
- définir ce que veut dire "technologiquement mort" Plus utilisé. Pickabilisé si tu préfères.
-- fcol.debats, sept 2005 --
Nicolas George
Thierry Boudet wrote in message :
Peut-être que la "virgule en l'air" cité dans le sujet est l'apostrophe à-la-windows, qui ne fait pas parti de l'iso8859-1 ?
Possible. Cependant, s'il y a ça, c'est probablement que le codage réel est windows-1252, et dans ce cas, le code qui représente la fameuse virgule en l'air est un code iso-8859-1 valide, même s'il représente un code de contrôle.
Thierry Boudet wrote in message <slrndou789.e65.tth@oshima.zouh.org>:
Peut-être que la "virgule en l'air" cité dans le sujet
est l'apostrophe à-la-windows, qui ne fait pas parti
de l'iso8859-1 ?
Possible. Cependant, s'il y a ça, c'est probablement que le codage réel est
windows-1252, et dans ce cas, le code qui représente la fameuse virgule en
l'air est un code iso-8859-1 valide, même s'il représente un code de
contrôle.
Peut-être que la "virgule en l'air" cité dans le sujet est l'apostrophe à-la-windows, qui ne fait pas parti de l'iso8859-1 ?
Possible. Cependant, s'il y a ça, c'est probablement que le codage réel est windows-1252, et dans ce cas, le code qui représente la fameuse virgule en l'air est un code iso-8859-1 valide, même s'il représente un code de contrôle.
Paul Gaborit
À (at) 01 Dec 2005 15:55:53 GMT, Thierry Boudet écrivait (wrote):
On 2005-12-01, Paul Gaborit wrote:
Il est donc bien encodé en iso-8859-1. Tout cela est correct.
Le bug doit être ailleurs.
Peut-être que la "virgule en l'air" cité dans le sujet
est l'apostrophe à-la-windows, qui ne fait pas parti de l'iso8859-1 ?
En iso-8859-1, à ma connaissance, il n'existe aucune valeur invalide. Donc, au pire, il y aurait juste un autre caractère à la place de l'apostrophe.
En fait, on discute un peu dans le vide car on ne connait toujours pas le symptôme de l'erreur...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 01 Dec 2005 15:55:53 GMT,
Thierry Boudet <tth@zouh.org> écrivait (wrote):
On 2005-12-01, Paul Gaborit <Paul.Gaborit@invalid.invalid> wrote:
Il est donc bien encodé en iso-8859-1. Tout cela est correct.
Le bug doit être ailleurs.
Peut-être que la "virgule en l'air" cité dans le sujet
est l'apostrophe à-la-windows, qui ne fait pas parti
de l'iso8859-1 ?
En iso-8859-1, à ma connaissance, il n'existe aucune valeur
invalide. Donc, au pire, il y aurait juste un autre caractère à la
place de l'apostrophe.
En fait, on discute un peu dans le vide car on ne connait toujours pas
le symptôme de l'erreur...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 01 Dec 2005 15:55:53 GMT, Thierry Boudet écrivait (wrote):
On 2005-12-01, Paul Gaborit wrote:
Il est donc bien encodé en iso-8859-1. Tout cela est correct.
Le bug doit être ailleurs.
Peut-être que la "virgule en l'air" cité dans le sujet
est l'apostrophe à-la-windows, qui ne fait pas parti de l'iso8859-1 ?
En iso-8859-1, à ma connaissance, il n'existe aucune valeur invalide. Donc, au pire, il y aurait juste un autre caractère à la place de l'apostrophe.
En fait, on discute un peu dans le vide car on ne connait toujours pas le symptôme de l'erreur...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Paul
En fait, on discute un peu dans le vide car on ne connait toujours pas le symptôme de l'erreur...
Je vais essayer de préciser :
je récupere donc le XML du fil RSS, et je lui fait quelques traitements... ensuite je cré un fichier xml local issu de ce traitement et qui contient donc les caractère iso du RSS source. C'est ensuite quand mon script perl doit lire mon xml local, il me retourne ce message d'erreur : Wide character in syswrite at /usr/share/perl/5.8/Net/Cmd.pm line 436
En espérant avoir donné des informations qui aideront à mieux comprendre ce qui se passe... NB : faut aussi envisager que l'erreur viens de moi !!
En fait, on discute un peu dans le vide car on ne connait toujours pas
le symptôme de l'erreur...
Je vais essayer de préciser :
je récupere donc le XML du fil RSS, et je lui fait quelques
traitements...
ensuite je cré un fichier xml local issu de ce traitement et qui
contient donc les caractère iso du RSS source.
C'est ensuite quand mon script perl doit lire mon xml local, il me
retourne ce message d'erreur :
Wide character in syswrite at /usr/share/perl/5.8/Net/Cmd.pm line 436
En espérant avoir donné des informations qui aideront à mieux
comprendre ce qui se passe...
NB : faut aussi envisager que l'erreur viens de moi !!
En fait, on discute un peu dans le vide car on ne connait toujours pas le symptôme de l'erreur...
Je vais essayer de préciser :
je récupere donc le XML du fil RSS, et je lui fait quelques traitements... ensuite je cré un fichier xml local issu de ce traitement et qui contient donc les caractère iso du RSS source. C'est ensuite quand mon script perl doit lire mon xml local, il me retourne ce message d'erreur : Wide character in syswrite at /usr/share/perl/5.8/Net/Cmd.pm line 436
En espérant avoir donné des informations qui aideront à mieux comprendre ce qui se passe... NB : faut aussi envisager que l'erreur viens de moi !!
Thierry Boudet
On 2005-12-01, Paul wrote:
C'est ensuite quand mon script perl doit lire mon xml local, il me ^^^^
retourne ce message d'erreur : Wide character in syswrite at /usr/share/perl/5.8/Net/Cmd.pm line 436 ^^^^^
mmmm...
-- Tsss, tss. La mondial a été un peu sacrifiée au niveau de la ligne, mais il y a 4 places, il faut ce qu'il faut. La Dino est magnifique, elle est d'une vulgarité italienne indépassable . C'est une très belle Ferrari, dessinée pour des cons d'américains qui n'y ont rien compris.
On 2005-12-01, Paul <ernond_paul@yahoo.fr> wrote:
C'est ensuite quand mon script perl doit lire mon xml local, il me
^^^^
retourne ce message d'erreur :
Wide character in syswrite at /usr/share/perl/5.8/Net/Cmd.pm line 436
^^^^^
mmmm...
--
Tsss, tss. La mondial a été un peu sacrifiée au niveau de la ligne, mais
il y a 4 places, il faut ce qu'il faut. La Dino est magnifique, elle est
d'une vulgarité italienne indépassable . C'est une très belle Ferrari,
dessinée pour des cons d'américains qui n'y ont rien compris.
C'est ensuite quand mon script perl doit lire mon xml local, il me ^^^^
retourne ce message d'erreur : Wide character in syswrite at /usr/share/perl/5.8/Net/Cmd.pm line 436 ^^^^^
mmmm...
-- Tsss, tss. La mondial a été un peu sacrifiée au niveau de la ligne, mais il y a 4 places, il faut ce qu'il faut. La Dino est magnifique, elle est d'une vulgarité italienne indépassable . C'est une très belle Ferrari, dessinée pour des cons d'américains qui n'y ont rien compris.