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

Spring Web Java Discussion :

Problème d'accent lors du téléchargement d'un fichier


Sujet :

Spring Web Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 101
    Points : 57
    Points
    57
    Par défaut Problème d'accent lors du téléchargement d'un fichier


    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 !

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    Ton code écris en UTF-8 mais dit qu'il parle le ISO-8859-1.
    Je pense qu'il te faut convertir les String java (byte[] de ton String surtout) en ISO-8859-1.
    Et pour ce faire il existe ceci :
    getBytes(String charsetName)
    Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.
    et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outputStream.write(csvContent.toString().getBytes("ISO-8859-1"));
    Mais attention à
    Throws:
    UnsupportedEncodingException - If the named charset is not supported

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 101
    Points : 57
    Points
    57
    Par défaut
    Merci, ça fonctionne ! Rapide, simple et efficace !

    C'était super simple et pourtant j'ai retourné le truc dans tous les sens. C'est vraiment relou les problèmes de charset !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème d'accent lors de la récupération d'infos
    Par 2rock dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/05/2009, 18h08
  2. [HTML] problème d'accent lors de l'affichage
    Par teac2006 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/06/2008, 17h06
  3. Problême d'accent lors de la création d'un fichier txt
    Par maxmarie dans le forum Windows Mobile
    Réponses: 15
    Dernier message: 24/08/2007, 21h59
  4. Réponses: 3
    Dernier message: 07/06/2007, 13h22
  5. Problème d'accent lors d'une requête
    Par escape dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/12/2006, 13h48

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