Je rencontre un problème de charset lors du téléchargement d'un fichier CSV généré à la volée depuis une servlet.

Voici le code simplifié :
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
18
19
20
21
22
23
24
 
	@RequestMapping(value = "/dowloadStats.jgi", method = RequestMethod.GET)
	public String downloadStatFile(@RequestParam("stat") String stat, HttpServletRequest request, HttpServletResponse response, HttpSession session, ModelMap model) {
		String fileName = "stats.csv";
 
		response.setContentType("text/csv; charset=ISO-8859-1");
		response.setCharacterEncoding("ISO-8859-1");
		response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
 
		StringBuffer csvContent = new StringBuffer();
		String crlf = System.getProperty("line.separator");
		csvContent.append("Durée des appels reçus" + crlf);
		csvContent.append("àéïôù");
 
		try {
			OutputStream outputStream = response.getOutputStream();
			outputStream.write(csvContent.toString().getBytes());
			outputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		return null;
	}
En local (je suis sous Windows 7, avec un charset en ANSI au niveau Tomcat/Java, les sources sont en UTF-8) tout fonctionne bien. Mais une fois déployé en intégration, j'ai un problème de conversion de charset : le fichier téléchargé est en UTF-8, bien que je le force en ISO-8859-1 et les accents sont mal affichés une fois le fichier ouvert sous Excel. Après conversion en ANSI avec Notepad ++, ça marche. Le charset par défaut du serveur applicatif est UTF-8 (Charset.defaultCharset()), en local c'est windows-1252.

Pourquoi est-ce que le fait de forcer en ISO ne change rien ? J'ai essayé de reproduire le problème sur mon poste en forçant en UTF-8 mais ça ne fait rien non plus... Comment faire pour enfin s'affranchir de ces problèmes d'accent ?

Merci de votre aide !