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

Logging Java Discussion :

[Log4J][Windows] Les accents de la langue française


Sujet :

Logging Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 40
    Points
    40
    Par défaut [Log4J][Windows] Les accents de la langue française
    Bonjour à tous.

    J'ai un petit problème avec Log4j, la console Windows et les accents.
    J'ai un module qui, quand je l'exécute depuis Eclipse, par exemple, logue correctement, accents y compris.
    Par contre, lorsque je le lance en ligne de commande depuis la console Windows (java -jar), n'arrive pas à sortir les accents correctement.
    Le problème est également présent dans les logs que je mets dans une base de données.

    On m'a parlé d'un paramétrage de la JVM pour résoudre ce problème mais je ne trouve rien sur le sujet.

    Quelqu'un a-t-il une idée sur le sujet ?

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Tino13 Voir le message
    J'ai un petit problème avec Log4j, la console Windows et les accents.
    Et le problème vient de Windows !!!


    Je m'explique. Windows utilise deux types d'applications différents : les applications graphique et les applications consoles, et chacune de ces deux types applications utilisent un charset différent : cp1252 (ou windows-1252) pour la première, et cp850 (ou IBM850) pour la seconde (pour les versions d'europe de l'ouest en tout cas)

    Le problème c'est que Java ne détecte que le charset cp1252 car c'est bien le charset du système, alors que le second est une relique hérité du DOS...

    Mais lorsqu'on utilise une console DOS il faudrait utiliser le charset cp850 pour ne pas avoir de problème d'encodage...


    Il y a quand même plusieurs solutions :

    1. Changer l'encodage de la sortie standard pour utiliser celle du DOS :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      	try {
      		System.setOut(new PrintStream(System.out, true, "cp850") );
      	} catch (UnsupportedEncodingException e) {
      		e.printStackTrace();
      	}
      Tu peux/doit bien sûr faire la même chose avec la sortie d'erreur...
      Problème : maintenant c'est sous Eclipse que ce n'est plus bon, puisque ce dernier utilise logiquement le cp1252...


    2. Modifier la propriété système file.encoding lorsqu'on lance le programme en mode DOS afin qu'il utilise le bon charset :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      java -Dfile.encoding=cp850 -jar appli.jar
      Problème : cela impacte aussi les fichiers créer par ton programme si tu ne leurs a pas spécifié d'encodage...


    3. Cumuler les deux solutions en utilisant une propriété spécifique pour la console :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      java -Dmsdos.encoding=cp850 -jar appli.jar
      En utilisant le code suivant au début de ton programme :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      	String msdosEncoding = System.getProperty("msdos.encoding");
      	if (msdosEncoding!=null) {
      		try {
      			System.setOut(new PrintStream(System.out, true, msdosEncoding) );
      		} catch (UnsupportedEncodingException e) {
      			e.printStackTrace();
      		}
      	}



    Citation Envoyé par Tino13 Voir le message
    Le problème est également présent dans les logs que je mets dans une base de données.
    Là le problème est tout autre et doit surement se situer sur la configuration de ta base de données et/ou de ton liens JDBC...


    a++

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Je viens de trouver ceci : http://blogs.msdn.com/michkap/archiv...06/544251.aspx

    Sous Windows XP il existe un utilitaire permettant de connaitre l'encodage utilisé par la console DOS : chcp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\>chcp
    Page de codes active : 850

    Et apparemment il est même possible de le changer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\>chcp 1252
    Page de codes active : 1252
    Et du coup il n'y a plus rien à faire sur le programme Java, mais par contre il faut modifier les propriétés de la console DOS afin d'utiliser la police de caractères "Lucida Console" à la place de "Polices Raster" car cette dernière ne possède pas le bon jeu de caractère....

    Mais bon je ne sais pas si chcp est présent sur toutes les versions de Windows

    a++

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    Oui je connaissais ces 2 encodages mais j'ai déjà essayé le coup de changer le prinstream du System.out / .err sans succès.

    C'est pourquoi je me disais que ça devait venir de Log4j...

    La commande chcp n'a rien changé non plus.

    Et puis comme tu le dis j'ai des problèmes pour le logging dans la base de données.
    Ce que je n'ai pas dit mais qui commence à prendre son sens c'est que mes sources Java ont été écrites en UTF-8.

    J'avoue que dans toutes ces manips je sais plus trop quoi faire

    Je dois passer à autre chose là mais je retesterai plus tard.
    En tout cas merci pour ton aide.

Discussions similaires

  1. Java, Windows et les accents
    Par _Mac_ dans le forum Langage
    Réponses: 3
    Dernier message: 25/01/2006, 13h10
  2. Windows ne gère plus les accents
    Par Tofalu dans le forum Windows XP
    Réponses: 9
    Dernier message: 30/03/2005, 16h23
  3. [FoxPro]Instruction pour enlever les accents ?
    Par Fab-FoxPro dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 19/08/2003, 15h46
  4. les accents et printf
    Par remi77 dans le forum C
    Réponses: 5
    Dernier message: 07/07/2003, 20h53
  5. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33

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