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 :

Properties - Chargé un fichier .ini


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut Properties - Chargé un fichier .ini
    Bonjour,

    J'ai un petit problème avec un fichier "préférence.ini" dans mon application, qui contient une ligne "formatEuros = #.## €". Le problème vient uniquement du signe euro.

    Je charge ce fichier de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String fichierDéfaut = "préférence.ini";
    Properties préfDéfaut = new Properties();
    FileInputStream prefDef = new FileInputStream(new File(fichierDéfaut));
    préfDéfaut.load(prefDef);
    prefDef.close();
    Le problème, c'est que 'préfDéfaut .getProperty("formatEuros");' me renvoie "#.## €" (des signes à la place de "€").

    Comment pourrais-je faire pour avoir vraiment un signe euros dans mon fichier ini ?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Quel est l'encodage de ton fichier ini?

  3. #3
    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,


    C'est normal : la méthode load(InputStream) utilise l'encodage ISO-Latin1 qui ne possède pas le caractère EURO. Tu dois sois utiliser l'unicode du caractère EURO, soit utiliser un InputStreamReader() en spécifiant l'encodage de ton fichier.

    Note que tu peux également utiliser directement FileReader() qui utilisera l'encodage par défaut du système...

    Sinon quelques remarques :
    • Pas d'accents dans les noms de variables (c'est pas beau !)
    • Il faut utiliser un try/finally pour fermer les flux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		String fichierDefaut = "préférence.ini";
    		Properties prefDefaut = new Properties();
    		FileReader prefDef = new FileReader(new File(fichierDefaut));
    		try {
    			prefDefaut.load(prefDef);
    		} finally {
    			prefDef.close();
    		}
    a++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    En fait, j'avais juste simplifié mon code pour ne mettre que les commandes utilisées

    Mon fichier est en UTF-8 (comme tout le projet).

    En attendant, j'ai remplacé "formatEuros = #.## €" par "formatEuros = #.## \u20AC", mais je trouve pas cela terrible :/

    Je vais essayer avec FileReader(), je répond dans quelques minutes

  5. #5
    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
    Citation Envoyé par JohnNC
    Mon fichier est en UTF-8 (comme tout le projet).
    Dans ce cas il faut le lire en UTF-8, ce que ne fait pas la méthode load(InputStream)...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reader prefDef = new InputStreamReader(new InputStream(fichierDefaut), "UTF-8");
    a++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Citation Envoyé par adiGuba
    Tu dois sois utiliser l'unicode du caractère EURO, soit utiliser un InputStreamReader() en spécifiant l'encodage de ton fichier.
    Note que tu peux également utiliser directement FileReader() qui utilisera l'encodage par défaut du système...
    Au passage, n'y a-t-il pas un mélange des deux, qui éviterait ainsi à chaque fois de spécifier l'encodage du fichier ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    Voià, au final, j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String fichierDéfaut = "préférence.ini";
    Properties préfDéfaut = new Properties();
    FileInputStream prefDef = new FileInputStream(new File(fichierDéfaut));
    préfDéfaut.load(prefDef);
    prefDef.close();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String fichierDéfaut = "préférence.ini";
    Properties préfDéfaut = new Properties();
    File f = new File(fichierDéfaut);
    InputStreamReader prefDef = new InputStreamReader(new FileInputStream(f),"UTF-8");
    préfDéfaut.load(prefDef);
    prefDef.close();
    Et là, ca marche

    Merci !

    P.S: Je viens de voir la réponse
    P.S 2 : Méa culpa pour les accents

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

Discussions similaires

  1. Fichier .ini ou .properties
    Par sovo dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 09/09/2009, 14h09
  2. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  3. Fichiers INI et TlistBox
    Par Philippe01 dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2003, 15h36
  4. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16
  5. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06

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