Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème Unicode Latin1

2 réponses
Avatar
Laurent Simonneau
Bonjour,

J'ai un etrange probl=E8me d'encodage de caract=E8res.

Mon application parse un fichier XML avec XML::LibXML. Cette librairie=20
retourne toutes les cha=EEnes en UTF8. Pour tout un tas de raison=20
historiques pas encore r=E9solues, mon application (Mioga pour ne pas la =

cit=E9) travaille en ISO-8859-1, donc, l'une des premi=E8re chose que je =

fait apr=E8s avoir pars=E9 mon XML, c'est de convertir les r=E9sultats=20
retourn=E9s pas libxml en latin1. Ce qui marche .... des fois !!

En fait, je parcours l'objet DOM retourn=E9 par XML::LibXML pour le=20
convertir en hashref (un peu comme le fait XML::Simple qui est bas=E9 sur=
=20
expat) et c'est au moment on je r=E9cupere la valeur des noeuds textes qu=
e=20
je les convertis en latin1.

Par soucis de compatibilit=E9 avec perl 5.6, j'utilise Unicode::String=20
pour faire les convertions.

Bref, tous va bien si je fait un warn des valeurs, elles sont bien=20
affich=E9e en Latin1 ... jusqu'a ce qu'elles finnissent par ce retrouver =

dans une ARRAY. Je dump l'array, tout va bien, c'est toujours en Latin1=20
=2E.. J'utilise "join" pour serialiser la liste et paf ! La chaine g=E9n=E9=
r=E9=20
contient des caract=E8res UTF-8 et plus du latin1.

Etrange non ? Quelqu'un aurait il une solution ou a d=E9fault une=20
explication ?

En fait ce qui me g=E8ne c'est le cot=E9 non syst=E8matique du probl=E8me=
=2E
Avec des cha=EEnes latin1 qui ne proviennent pas de libxml ca marche tres=
=20
bien.

Merci d'avance,

Cordialement,

--=20
Laurent Simonneau
Alixen
Tel : 01 69 85 24 13
Fax : 01 69 85 24 10

2 réponses

Avatar
Paul Gaborit
À (at) Fri, 26 Nov 2004 09:49:42 +0100,
Laurent Simonneau écrivait (wrote):
Par soucis de compatibilité avec perl 5.6, j'utilise Unicode::String pour
faire les convertions.


Ne pouvez-vous pas utiliser plutôt la méthode encoding de
XML::LibXML::Document ? Je ne suis pas sûr d'avoir compris votre problème mais
il se peut que ça corresponde à ce que vous souhaitez...

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Laurent Simonneau
À (at) Fri, 26 Nov 2004 09:49:42 +0100,
Laurent Simonneau écrivait (wrote):

Par soucis de compatibilité avec perl 5.6, j'utilise Unicode::String pour
faire les convertions.



Ne pouvez-vous pas utiliser plutôt la méthode encoding de
XML::LibXML::Document ? Je ne suis pas sûr d'avoir compris votre prob lème mais
il se peut que ça corresponde à ce que vous souhaitez...



La method encodng sert a définir l'encodage du fichier XML qui sera
généré par XML::LibXML, pas l'encodage utilisé pour la manipulati on des
données.
Les fonctions de XML::LibXML retournent toujours de l'utf8, a
l'exception des fonctions de serialisation biensur.

Cordialement,

--
Laurent Simonneau
Alixen
Tel : 01 69 85 24 13
Fax : 01 69 85 24 10