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

Entrée/Sortie Java Discussion :

Accents remplacés par des ? durant l'écriture


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut Accents remplacés par des ? durant l'écriture
    Bonjour!

    J'ai vu plusieurs questions à propos de ceci, mais je ne trouve pas ma réponse. J'écris une string dans un fichier et les accents sont remplacés par les points d'interrogations, j'ai essayé toute sorte d'encodage mais ça ne fonctionne toujours pas. J'ai une application WEB, donc à l'aide de mon code JSP ci-dessous j'essaie d'écrire un fichier test.bat sur le serveur Linux.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    File scriptFile = new File(nomFichier);
    scriptFile.createNewFile();
    PrintWriter crayon = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(scriptFile),"ISO-8859-1")));
    crayon.write("Chaîne qui ne fonctionne pas avec les accents.");
    crayon.close();
    J'ai essayé toutes sortes d'autres codes qui ne fonctionnent pas non plus.
    Lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OutputStreamWriter out2 = new OutputStreamWriter(new ByteArrayOutputStream());
    String encodage = out2.getEncoding();
    Ca me donne "ASCII".

    Et lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("file.encoding")
    Ca me donne: "ANSI_X3.4-1968".

    Est-ce que quelqu'un sait comment faire?

    Merci!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 104
    Points : 140
    Points
    140
    Par défaut
    ANSI_X3.4-1968 semble être un synonyme de US-ASCII.
    Cela signifie que le système sur lequel tourne Java est nativement en mode ASCII 7bits US, donc sans support des caractères accentués.
    Le serveur Linux ne serait-il pas un peu ancien (genre RedHat 6) ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Non notre serveur n'est pas trop vieux. On me dit que c'est Fed Core 3 l'OS.

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Salut,

    J'ecris dans mes fichiers comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    OutputStreamWriter fluxEcritureTexte = new OutputStreamWriter(new FileOutputStream(cheminAbstraitSortie), "ISO-8859-1");
     
    BufferedWriter tamponEcriture = new BufferedWriter(fluxEcritureTexte);
    J'ouvre mes fichiers comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    						 FileInputStream file = new FileInputStream(destPath+"/"+str_outputFileName);
    						 lecteurAvecBuffer = new BufferedReader(new InputStreamReader(file,"ISO-8859-1"));
    et les accents sont bien interprétés. (Os: Linux Red Hat Entreprise 3

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Lorsque tu écrit ou lit un fichier sans préciser le Charset, c'est celui par défaut du système qui est utilisé, le problème est que celui-ci diffère selon les OS.

    Il faut donc que le Charset de lecture soit le même que le Charset d'écriture pour éviter ce genre de problème (je te renvoie à l'exemple de beegood ).

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

Discussions similaires

  1. [CSV] Remplacer les points par des virgules
    Par johnkro dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2008, 19h25
  2. [vb6] Remplacer les Frames par des PictureBox
    Par Christophe P. dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/07/2006, 16h26
  3. [CSS] Remplacer un tableau par des div et css
    Par irenee dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/05/2006, 16h04
  4. Comment remplacer le clavier par des boutons ?
    Par aliwassem dans le forum Langage
    Réponses: 1
    Dernier message: 14/12/2005, 19h00
  5. Réponses: 3
    Dernier message: 07/12/2005, 13h51

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