Je suis en train de travailler (en perl) sur un outil et j'utilise xml
pour stocker les éléments en base.
Ma table (mysql) a, entre autres, deux champs : contenu_xml et
contenu_affichable
A l'appel de ma fonction d'affichage, on regarde si contenu_affichable est
vide, et si oui, on le génère a partir de contenu_xml
J'utilise pour cela XML::Simple qui répond parfaitement à mes besoins.
Cependant, j'ai un problème avec les accents... (qui n'en a pas avec XML...)
voici un exemple de contenu_xml :
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<opt>
<texte>Un test de texte accentué!</texte>
</opt>
(j'utilise l'option XMLDecl de XML::Simple pour l'encoding, comme
indiqué dans la doc)
Et après un simple appel à XMLin, j'obtiens mon hashref puis mon texte :
<<<<
my $x = new XML::Simple(ForceContent => 1, XMLDecl => '<?xml version="1.0"
encoding="ISO-8859-1" standalone="yes"?>');
my $hash = $x->XMLin($monxml);
my $texte = $hash->{'texte'}->{'content'};
>>>>
Si j'affiche le $texte directement, j'ai bien un accent...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Twidi
Bon j'ai fini par trouver...
L'enregistrement en base semble convertir d'emblée en UTF8... ainsi un simple
use Unicode::String; my $u = Unicode::String::utf8($texte); $texte = $u->latin1;
Résoud le problème.
Cependant, d'après cette page : http://xmlfr.org/documentations/articles/000508-0001
je ne devrai plus avoir besoin de ça, car, je cite << Unicode::String n'est plus nécessaire en Perl 5.6, l'opérateur tr suffit:
$string=~ tr/ -x{ff}//UC;
Je suis en 5.8.2 et cette ligne me sort une erreur de syntaxe... donc bon je me contente de Unicode::String qui a résolu mon problème.
Twidi
Le Tue, 13 Jan 2004 16:36:34 +0100, Twidi a écrit :
Salut
Je suis en train de travailler (en perl) sur un outil et j'utilise xml pour stocker les éléments en base.
Ma table (mysql) a, entre autres, deux champs : contenu_xml et contenu_affichable
A l'appel de ma fonction d'affichage, on regarde si contenu_affichable est vide, et si oui, on le génère a partir de contenu_xml J'utilise pour cela XML::Simple qui répond parfaitement à mes besoins.
Cependant, j'ai un problème avec les accents... (qui n'en a pas avec XML...)
voici un exemple de contenu_xml :
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <opt> <texte>Un test de texte accentué!</texte> </opt>
(j'utilise l'option XMLDecl de XML::Simple pour l'encoding, comme indiqué dans la doc)
Et après un simple appel à XMLin, j'obtiens mon hashref puis mon texte :
<<<< my $x = new XML::Simple(ForceContent => 1, XMLDecl => '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>');
my $hash = $x->XMLin($monxml);
my $texte = $hash->{'texte'}->{'content'};
Si j'affiche le $texte directement, j'ai bien un accent...
(l'affichage est dans une page xhtml avec encoding iso-8859-1)
Si quelqu'un avait une piste... j'ai bien lu des trucs sur xmlfr.org, mais, euh, rien qui m'inspire....
D'avance merci pour votre aide
Twidi
Bon j'ai fini par trouver...
L'enregistrement en base semble convertir d'emblée en UTF8...
ainsi un simple
use Unicode::String;
my $u = Unicode::String::utf8($texte);
$texte = $u->latin1;
Résoud le problème.
Cependant, d'après cette page :
http://xmlfr.org/documentations/articles/000508-0001
je ne devrai plus avoir besoin de ça, car, je cite
<<
Unicode::String n'est plus nécessaire en Perl 5.6, l'opérateur tr suffit:
$string=~ tr/ -x{ff}//UC;
Je suis en 5.8.2 et cette ligne me sort une erreur de syntaxe...
donc bon je me contente de Unicode::String qui a résolu mon problème.
Twidi
Le Tue, 13 Jan 2004 16:36:34 +0100, Twidi a écrit :
Salut
Je suis en train de travailler (en perl) sur un outil et j'utilise xml
pour stocker les éléments en base.
Ma table (mysql) a, entre autres, deux champs : contenu_xml et
contenu_affichable
A l'appel de ma fonction d'affichage, on regarde si contenu_affichable est
vide, et si oui, on le génère a partir de contenu_xml
J'utilise pour cela XML::Simple qui répond parfaitement à mes besoins.
Cependant, j'ai un problème avec les accents... (qui n'en a pas avec XML...)
voici un exemple de contenu_xml :
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<opt>
<texte>Un test de texte accentué!</texte>
</opt>
(j'utilise l'option XMLDecl de XML::Simple pour l'encoding, comme
indiqué dans la doc)
Et après un simple appel à XMLin, j'obtiens mon hashref puis mon texte :
<<<<
my $x = new XML::Simple(ForceContent => 1, XMLDecl => '<?xml version="1.0"
encoding="ISO-8859-1" standalone="yes"?>');
my $hash = $x->XMLin($monxml);
my $texte = $hash->{'texte'}->{'content'};
Si j'affiche le $texte directement, j'ai bien un accent...
L'enregistrement en base semble convertir d'emblée en UTF8... ainsi un simple
use Unicode::String; my $u = Unicode::String::utf8($texte); $texte = $u->latin1;
Résoud le problème.
Cependant, d'après cette page : http://xmlfr.org/documentations/articles/000508-0001
je ne devrai plus avoir besoin de ça, car, je cite << Unicode::String n'est plus nécessaire en Perl 5.6, l'opérateur tr suffit:
$string=~ tr/ -x{ff}//UC;
Je suis en 5.8.2 et cette ligne me sort une erreur de syntaxe... donc bon je me contente de Unicode::String qui a résolu mon problème.
Twidi
Le Tue, 13 Jan 2004 16:36:34 +0100, Twidi a écrit :
Salut
Je suis en train de travailler (en perl) sur un outil et j'utilise xml pour stocker les éléments en base.
Ma table (mysql) a, entre autres, deux champs : contenu_xml et contenu_affichable
A l'appel de ma fonction d'affichage, on regarde si contenu_affichable est vide, et si oui, on le génère a partir de contenu_xml J'utilise pour cela XML::Simple qui répond parfaitement à mes besoins.
Cependant, j'ai un problème avec les accents... (qui n'en a pas avec XML...)
voici un exemple de contenu_xml :
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> <opt> <texte>Un test de texte accentué!</texte> </opt>
(j'utilise l'option XMLDecl de XML::Simple pour l'encoding, comme indiqué dans la doc)
Et après un simple appel à XMLin, j'obtiens mon hashref puis mon texte :
<<<< my $x = new XML::Simple(ForceContent => 1, XMLDecl => '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>');
my $hash = $x->XMLin($monxml);
my $texte = $hash->{'texte'}->{'content'};
Si j'affiche le $texte directement, j'ai bien un accent...