IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XML] [XSLT] Problème d'encodage des accents


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 31
    Points : 24
    Points
    24
    Par défaut [XML] [XSLT] Problème d'encodage des accents
    Bonjour à tous,

    Je vous soumets un problème qui "m'agace" depuis hier matin.

    J'ai un fichier xml que je veux transformer grace à xslt. Le problème c'est que lorsque j'applique la transformation avec java, tous les accents sont transformés en point d'interrogation. Je suppose que c'est à la lecture de ce fichier xml qu'il récupère n'importe quoi.
    Pourtant je lui spécifie l'encodage à utiliser lors de la lecture du fichier et lors de la transformation.

    De plus, ce phénomène ce produit seulement sur l'environnement linux. Quand j'execute mon java sue windows, cela ne se produit pas !!

    Avez vous une idée de la cause de mon problème?

    Voici le code que j'utilise, si ça peut vous aider :


    String nomFichier = args[0]; // chemin du fichier xml bulletin
    String nomPDF = args[1]; // chemin du fichier pdf a creer
    String fichierXSL = args[2]; // chemin du fichier xslt a utiliser

    File file = new File (nomFichier);

    FileInputStream xmlFis = new FileInputStream(file);
    InputStreamReader xmlIsr = new InputStreamReader(xmlFis,"iso-8859-1");
    StreamSource sourceXML = new StreamSource(xmlIsr);

    String targetFile = nomPDF;
    String XSL = fichierXSL;

    String contenuFO = getFo(sourceXML, XSL);

    /* Fonction getFo */
    public static String getFo(StreamSource fluxXml, String fichierXsl) {
    String resultat = "PAS DE BULLETIN";

    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    String resultat = "";
    try {
    StreamSource sourceXSL = new StreamSource(fichierXsl);
    Transformer transformer = transformerFactory.newTransformer(sourceXSL);
    transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");

    StringWriter writer = new StringWriter();
    StreamResult result = new StreamResult(writer);
    transformer.transform(fluxXml,result);
    resultat = writer.toString();

    }
    catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return resultat;
    }

  2. #2
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    il faut que tu encode tes fichier xml et xsl en UTF-8 ( quand tu enregistre ou depuis l onglet format tu peux choisir de mettree en UTF-8 )

    et que tu mettes les propriétés idem :
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:output method="html" indent="yes" encoding="UTF-8"/>

    puis enfin dnas ton code java :
    tu remplace :
    transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
    par :
    transformer.setOutputProperty(OutputKeys.METHOD, "html");

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Non ça ne marche pas.
    De plus, mon but n'est pas d'avoir du html en sortie mais un xml FO.

    Merci quand même.

  4. #4
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    ca revient au meme ....
    si tu veux les accents il te faut tout mettre en UTF-8 .......... html , xml , ...

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    c'est ce que j'ai fait, j'ai à la fois des caractères du style &eacute; mais encore des caractères "?" .....

    Et puis à la génération du pdf, il me claque une stack trace, il ne connait pas "eacute".

    J'en ai marre, j'ai tout essayé y a rien qui fonctionne !!!!
    Merci pour ton aide

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    Car &eacute; c'est de l'iso pas de l'UTF-8, ce qu'il t'a dit est juste.
    En UTF-8 un accent aigue s'écrit &#xE9;
    teste

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Ben oui mais quand j'indique transformer.setOutputProperty(OutputKeys.METHOD,"html");
    il me transforme la moitié des accents en &eacute; et l'autre moitié reste des "?".

  8. #8
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    non mais une fois que tu a encoder :
    attention encoder c'est pas mettre :
    <?xml version="1.0" encoding="UTF-8"?>
    ou
    <xsl:output method="html" indent="yes" encoding="UTF-8"/>
    en debut de fichier ( masi ca faut le mettre aussi )

    donc encoder c'et prendre tes fichiers et en changer le format .... la tu doit etre en ANSI et donc lorsque tu change le format tu vas avoir des caracteres bizarre et c'est a toi de les changer manuellement ( conseil utilise la fonction remplacer )
    et tu met é si tu dois mettre é ou à ou è .... en utf-8 : je veux dire tu met bien les accents ( te prend pas la tête avec les caractères iso ou html .... )


    et la après ça sera bon

    allez courage

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 60
    Points : 33
    Points
    33
    Par défaut
    Moi si je mets direct les é è il gueule et me dit "Un caractère incorrect a été trouvé dans un contenu de texte"

  10. #10
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Je peux pas faire ça puisque je n'ai pas la main sur les fichiers. Ils sont générés (au bon format j'ai vérifié) et ensuite je les passe dans une molinette java qui crée un pdf.
    C'est un script automatique qui fait ça, c'est pas une modif ponctuelle.
    Donc je ne peux pas intervenir manuellement sur le contenu de mes fichiers....

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/05/2014, 13h38
  2. Réponses: 16
    Dernier message: 25/07/2012, 12h40
  3. [Pygame] Problème d'encodage des accents
    Par fuyo2004 dans le forum Programmation multimédia/Jeux
    Réponses: 7
    Dernier message: 09/05/2010, 19h14
  4. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum Flash
    Réponses: 20
    Dernier message: 11/10/2006, 21h16
  5. [XML][Flash] Problème d'encodage des accents
    Par JoN28fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 06/10/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo