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é :
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.
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; }
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 !
Partager