encodage caractères spéciaux XML

encodage caractères spéciaux XML - Java - Programmation

Marsh Posté le 18-12-2007 à 05:48:33    

Bonjour,
j'ai un fichier XML qui a cette tête:
 
<?xml version="1.0" encoding="UTF-8"?>
<menu>
    <produit dir="dossier1">le nom du produit avec éventuellement des caractères spéciaux</produits>
    <produit dir="dossier2">le nom d'un autre produit qui contient aussi des caractères spéciaux</produits>
 
</menu>
 
j'administre un fichier de ce type grace à une petite interface faite en GWT
le problème, c'est que pour mes noms de produits, si je les mets avec des caractères spéciaux tel que c'est pour l'instant, mon fichier XML n'est pas lisible correctement par mes classes, je me prends une sale exception qui me dit que j'ai des caractères invalides (forcément).
 
j'ai donc deux questions:
y a t-il une classe toute faite qui possède la fonction sympa qui me prendrait en entrée une chaine comme "entrée" et me recracherait "entr&233e"?
y'a t-il possibilité de forcer ma classe à manger ce fichier XML? (je précise que pour lire ce fichier XML, j'utilise SAXBuilder)

Reply

Marsh Posté le 18-12-2007 à 05:48:33   

Reply

Marsh Posté le 18-12-2007 à 14:23:08    

liouan a écrit :

Bonjour,
j'ai un fichier XML qui a cette tête:
 
<?xml version="1.0" encoding="UTF-8"?>
<menu>
    <produit dir="dossier1">le nom du produit avec éventuellement des caractères spéciaux</produits>
    <produit dir="dossier2">le nom d'un autre produit qui contient aussi des caractères spéciaux</produits>
 
</menu>
 
j'administre un fichier de ce type grace à une petite interface faite en GWT
le problème, c'est que pour mes noms de produits, si je les mets avec des caractères spéciaux tel que c'est pour l'instant, mon fichier XML n'est pas lisible correctement par mes classes, je me prends une sale exception qui me dit que j'ai des caractères invalides (forcément).
 
j'ai donc deux questions:
y a t-il une classe toute faite qui possède la fonction sympa qui me prendrait en entrée une chaine comme "entrée" et me recracherait "entr&233e"?
y'a t-il possibilité de forcer ma classe à manger ce fichier XML? (je précise que pour lire ce fichier XML, j'utilise SAXBuilder)


Reply

Marsh Posté le 18-12-2007 à 14:25:18    

utf-8 mon amour

Reply

Marsh Posté le 18-12-2007 à 14:25:23    

liouan a écrit :

Bonjour,
j'ai un fichier XML qui a cette tête:
 
<?xml version="1.0" encoding="UTF-8"?>
<menu>
    <produit dir="dossier1">le nom du produit avec éventuellement des caractères spéciaux</produits>
    <produit dir="dossier2">le nom d'un autre produit qui contient aussi des caractères spéciaux</produits>
 
</menu>
 
j'administre un fichier de ce type grace à une petite interface faite en GWT
le problème, c'est que pour mes noms de produits, si je les mets avec des caractères spéciaux tel que c'est pour l'instant, mon fichier XML n'est pas lisible correctement par mes classes, je me prends une sale exception qui me dit que j'ai des caractères invalides (forcément).
 
j'ai donc deux questions:
y a t-il une classe toute faite qui possède la fonction sympa qui me prendrait en entrée une chaine comme "entrée" et me recracherait "entr&233e"?
y'a t-il possibilité de forcer ma classe à manger ce fichier XML? (je précise que pour lire ce fichier XML, j'utilise SAXBuilder)


 
mettre en début de fichier xml  
<?xml version="1.0" encoding="ISO-8859-1"?>
au lieu de limiter à UTF-8
 

Reply

Marsh Posté le 18-12-2007 à 14:26:31    

barny a écrit :


 
mettre en début de fichier xml  
<?xml version="1.0" encoding="ISO-8859-1"?>
au lieu de limiter à UTF-8
 


Hein ? [:pingouino] "Se limiter à l'utf-8" ? [:johneh] T'as fumé quoi ?

Reply

Marsh Posté le 18-12-2007 à 14:31:25    

Si c'est toi qui génères ce fichier, modifie le code de façon à produire un document correct. Si ce n'est pas le cas, renvoie le fichier à son propriétaire/générateur en disant qu'il n'est pas valide. Mais dans aucun cas tu ne dois te taper la conversion à la main, c'est le boulot de celui qui construit le fichier.

 

EDIT : j'avais pas bien lu le message de départ [:petrus75]


Message édité par Taiche le 18-12-2007 à 14:34:29

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 20-12-2007 à 10:02:25    

et si par exemple tout est correct pour les accents, mais que le caractère '€'  ne passe pas ? Hein, par exemple...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 26-12-2007 à 11:25:25    

La réponse bateau : utiliser iso-8859-15 au lieu de iso-8859-1 (ce sont grosso modo les mêmes tables de caractères, mais la 15 possède le caractère €).
 
La réponse complète : 2 solutions possibles :
 - faire en sorte que le flux en écriture, dans lequel tu écris tes chaînes, soit ouvert avec l'encodage UTF-8 au lieu de l'encodage par défaut de la machine (c'est sans doute la solution la plus sure).
 - se moquer de l'encodage, et, au moment de les écrire dans le fichier XML, transformer dans chaque chaîne chaque caractère dont le code est supérieur ou égal à 128 en son entité XML équivalente (&#aaa; avec le code du caractère en décimal ou &#xbbb; avec son code en hexadécimal) -- (ça oblige à modifier le code => attention aux bugs)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed