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

Java Discussion :

Probléme avec les caractéres speciaux et encoding


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut Probléme avec les caractéres speciaux et encoding
    Bonjour,
    Je développe des jar file en eclipse sous windows (jvm default.fileencoding CP1252)

    Je les déploie ensuite sur un system Zlinux (jvm default.fileencoding utf-8)

    lors de l’exécution d'un simple jar file sur ce system zlinux j'ai un problème avec les char spéciaux Ô,é,è, ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class VerySimpleClass {
    	public static void main(String[] args) {
    		System.out.println(System.getProperty("file.encoding"));
    		System.out.println("Ô");
    		System.out.println("\u00d4");
    	}
     
    }
    Sur windows résultat :
    Cp1252
    Ô
    Ô


    Sur Zlinux résultat :
    UTF-8
    Ô
    Ô

    Quelqu'un aurais t'il une idée de l'endroit ou je dois chercher pour solutionner ce genre de problème ???

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    A quoi correspond la sortie standard ? A une console de terminal ? A la console d'eclipse ?



    Le problème est que par défaut Java utilise l'encodage par défaut du système pour écrire dans sa sortie standard. Mais il faut que la console utilise le même encodage afin de bien interpréter le tout...


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    heu sous windows j'utilise la console d'éclipse

    mais sous zlinux le résultat arrive dans un fichier .log, à l'origine le probléme se trouvais dans un fichier xml en sortie de mon application, ici j'ai fortement simplifier pour en arrivé à la conclusion que même un simple system.out.println ne marche pas


    mais j'avance
    je vien de changer les option de démarage de ma jvm eclipse avec -Dfile.encoding=UTF8

    et j ai maintenant le même résultat en eclipse qu en zlinux
    je suppose que quand jobtiendrait de nouveau un Ô sur la console j aurais la solution
    le code est devennu ceci mais ca ne marche pas mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static void main(String[] args) {
    try {
    	System.out.println(System.getProperty("file.encoding"));
    	System.out.println("A");
    	System.out.println(new String("Ô".getBytes("utf8"), "iso-8859-1"));
    	System.out.println("\u00d4");
    } catch (UnsupportedEncodingException e) {
    	e.printStackTrace();
    }
    }
    résultat
    UTF8
    A
    Ô
    Ô

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ton problème ne vient pas de Java qui écrit bien en UTF8 !

    Tu dis que tu rediriges tout vers un fichier de log. Avec quel application tu lis ce fichier ? Cette application gère-t-elle bien l'UTF8 ?



    Au passage ceci est complètement faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new String("Ô".getBytes("utf8"), "iso-8859-1")
    Un fois en Java on n'a pas à se soucier de l'encodage (c'est toujours de l'Utf-16). Ce n'est que lors des entrées/sorties qu'on doit gérer cela...




    Pour eclipse l'encodage de la console se configure dans les options du "Run As..."


    a++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    En effet,

    je vien de changer vers ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void main(String[] args) {
    try {
    System.out.println(System.getProperty("file.encoding"));
    			PrintStream out = new PrintStream(System.out, true, "ISO-8859-1");
    			out.println("\u00d4" );
    			out.println("Ô" );
    		} catch (UnsupportedEncodingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Si c'est de l'ISO-8859-1 pourquoi définir le file.encoding en UTF8 ?

    a++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    suite .....

    je disais donc en comme tu le conseil en changant les output je suis maintenant parvennu sur une jvm UTF8 à avoir une sortie en iso-8859-1

    je suppose que pour écrire un fichier en output ce seras la même chose

    un grand merci

    Pascal.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    bhen je ne décide pas du file encoding sur le system zlinux ..... il sert de passerelle entre un mainframe (os 390 en EBCDIC, les plateform win ISO-8859, et les system linux en utf8) donc il est en utf8 et je dois faire avec ....

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut
    et au final
    voici le code pour les system.out & pour un simple document XML

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public static void main(String[] args) {
    try {
    /* for a system out println */
        System.out.println(System.getProperty("file.encoding"));
        PrintStream out = new PrintStream(System.out, true, "ISO-8859-1");
        out.println("\u00d4");
        out.println("Ô");
     
    /* for an xml document using jdom */
        Element root = new Element("myRoot");
        Document myDocument = new Document(root);
        Element aListOfChar = new Element("aListOfChar");
        root.addContent(aListOfChar);
        aListOfChar.addContent("the stupid string Ôééè'((é'§§=^$=^ùµàèÉÈ");
        File file = null;
        file = new File("d:/testxmlout.xml");
        Format iso;
        XMLOutputter outputer = new XMLOutputter();
        iso = outputer.getFormat();
        iso.setEncoding("iso-8859-1");
        outputer.setFormat(iso);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            Writer writter = new OutputStreamWriter(fos, "ISO-8859-1");
            outputer.output(myDocument, writter);
            writter.flush();
            writter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    }

    Merci adiGuba

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

Discussions similaires

  1. [Encodage] Problème avec les caractère speciaux
    Par IRISnse dans le forum Langage
    Réponses: 5
    Dernier message: 22/04/2010, 16h15
  2. [SQL-Server] ms sql server et php : problème avec les caractères accentués
    Par stephane9422 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/12/2005, 17h45
  3. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10
  4. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  5. [SAX] Problème avec les caractères spéciaux
    Par abdou.sahraoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 18/07/2005, 10h07

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