OVH Cloud OVH Cloud

Caractère accentué

4 réponses
Avatar
Sébastien V.
Bonjour,

J'ai eu un petit souci avec la génération de fichier XML. Je lis un fichier
texte et je génère un fichier XML. Or dans mon fichier initial il peut avoir
des accents (ce qui est mal pour un fichier XML). J'ai bien contourné le
problème en testant dans une liste de caractère "interdits" fait maison mais
je voulais savoir si ça existait et si ça ne savait pas faire la converison
seul (en effet je pense que ma liste n'est pas exhaustive).

Sébastien

4 réponses

Avatar
News M Claveau /Hamster-P
Bonsoir !

XML utilisant Unicode, il ne devrait pas y avoir de problème d'accents. A
condition de bien choisir l'encodage approprié. Mais, comme, avec Unicode,
une absence de précision sur l'encodage correspond à l'utf-8, autant
l'utiliser.

@-salutations
--
Michel Claveau
Avatar
Encolpe DEGOUTE
Dans fr.comp.lang.python, Sébastien V. écrivit:
Bonjour,

J'ai eu un petit souci avec la génération de fichier XML. Je lis un fichier
texte et je génère un fichier XML. Or dans mon fichier initial il peut avoir
des accents (ce qui est mal pour un fichier XML). J'ai bien contourné le
problème en testant dans une liste de caractère "interdits" fait maison mais
je voulais savoir si ça existait et si ça ne savait pas faire la converison
seul (en effet je pense que ma liste n'est pas exhaustive).


Tant que les accents ne sont pas dans les identifiants d'attributs il
n'y a pas de problème.
Dans la définition de votre fichier xml, dans l'entête, vous devez
mettre l'encodage du fichier. Comme dans les scripts python d'ailleurs.

Le problème vient du non respect des encodages par microsoft...
J'ai déjà réalisé une fonction qui corrige ce problème.
Les caractères posant problèmes sont:
- l'apostrophe
- OE et oe
- les points de suspension
- un que j'oublie

Le mieux est de considéré que le texte en entrée est de l'unicode et de
le transformer avant de changer son encodage.

texte = texte.translate({
xE9: "'",
etc
}).encode('iso-8859-15', 'xmlrefcharreplace')

C'est en gros ça.
Je peux retrouver la fonction complète demain si besoin est.

--
Encolpe DEGOUTE
http://fleurbleue.colpi.info/~encolpe/
Logiciels libres, hockey sur glace et autres activités cérébrales

Avatar
Wilk
Encolpe DEGOUTE writes:

Dans fr.comp.lang.python, Sébastien V. écrivit:
Bonjour,

J'ai eu un petit souci avec la génération de fichier XML. Je lis un fichier
texte et je génère un fichier XML. Or dans mon fichier initial il peut avoir
des accents (ce qui est mal pour un fichier XML). J'ai bien contourné le
problème en testant dans une liste de caractère "interdits" fait maison mais
je voulais savoir si ça existait et si ça ne savait pas faire la converison
seul (en effet je pense que ma liste n'est pas exhaustive).


Tant que les accents ne sont pas dans les identifiants d'attributs il
n'y a pas de problème.
Dans la définition de votre fichier xml, dans l'entête, vous devez
mettre l'encodage du fichier. Comme dans les scripts python d'ailleurs.

Le problème vient du non respect des encodages par microsoft...


Tu parles de ça je suppose :
http://openweb.eu.org/articles/caracteres_illegaux/

J'ai fait la liste en python aussi :

winescape = ((chr(129),""),
(chr(130),"‚"),
(chr(131),"ƒ"),
(chr(132),"„"),
(chr(133),"…"),
(chr(134),"†"),
(chr(135),"‡"),
(chr(136),"ˆ"),
(chr(137),"‰"),
(chr(138),"Š"),
(chr(139),"‹"),
(chr(140),"Œ"),
(chr(145),"‘"),
(chr(146),"’"),
(chr(147),"“"),
(chr(148),"”"),
(chr(149),"•"),
(chr(150),"–"),
(chr(151),"—"),
(chr(152),"˜"),
(chr(153),"™"),
(chr(154),"š"),
(chr(155),"›"),
(chr(156),"œ"),
(chr(159),"Ÿ"))

--
William - http://flibuste.net


Avatar
Alex Marandon
News M Claveau /Hamster-P wrote:
XML utilisant Unicode, il ne devrait pas y avoir de problème d'accents. A
condition de bien choisir l'encodage approprié. Mais, comme, avec Unicode,
une absence de précision sur l'encodage correspond à l'utf-8, autant
l'utiliser.


Tout à fait. Après avoir rencontré pas mal de problèmes d'encodages de
caractères avec Python et XML j'en étais arrivé à la conclusion que le
plus simple était d'effectuer tous les traitements XML en Unicode. On
fera au besoin des conversion des données en entrée et en sortie si
celles-ci ne peuvent être en Unicode. Mais conserver l'Unicode pour tous
ses traitements XML évite bien des surprises.

Mes deux centimes.

--
Alex