Bonjour,

je précise que je travaille sous Windows XP.

J'essaie d'écrire dans un fichier xml avec les méthodes OutputStreamWriter :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
public void ecrireElemenr(Element e) throws IOException {
 
	String corps;
 
	FileOutputStream fos = new FileOutputStream(Application.REPERTOIRE_DATA + "e_" + e.getId() + ".xml");
    OutputStreamWriter out = new OutputStreamWriter(fos, "ISO-8859-1");
 
    corps = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n\n";
    corps += e.toXml();
 
	//Ecriture dans le fichier
	out.write(forceEncodage(corps,"ISO-8859-1"));
 
	//Fermeture du fichier
	out.close();
}

Cela fonctionne quand je lance l'application depuis Eclipse, mais lorsque que je lance le .jar que j'ai généré, les caractères spéciaux ne sont pas inscrits dans le fichier ( j'ai droit à des é ... ).

J'ai pourtant vérifié l'encodage du fichier xml avec notepad++.

De plus voici ma méthode qui force l'encodage :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
	// forcer l'encodage en  UTF-8 pour les caractères spéciaux
    private String forceEncodage(String stringXml,String charset) throws CharacterCodingException {
 
        CharsetEncoder encoder = Charset.forName(charset).newEncoder();
        String resultFin = new String(encoder.encode(CharBuffer.wrap(stringXml.toCharArray())).array());
 
        return resultFin;
    }


J'ai esayé d'écrire dans des fichiers xml en UTF-8 mais j'ai le même problème : ça fonctionne depuis eclipse mais pas depuis mon .jar.


N'hésitez pas à proposer vos idées pour corriger mon problème.

Merci d'avance