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 :

Caractère æ


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut Caractère æ
    Bonjour,

    je travaille sur un programme en java et je suis confronté au problème suivant : lors de la génération d'un fichier texte, je dois remplacer les espaces par 'æ' (alt 0230) ce qui fonctionnait tres bien jusqu'à présent. Or récemment un client slovène a commandé le programme et il se trouve que le fichier généré sur son poste contient '?' au lieu de 'æ'.

    Quelqu'un aurait-il une idée?

    Merci.

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Probablement un problème de "charset encoding" (par defaut), sur le poste qui génère le fichier : voir déjà si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("file.encoding")
    renvoie la même chose chez eux et chez toi ?!

    NB "CP1252" c'est de l'encodage windows ; si jamais ça peut servir...

    <n'hésite pas à mettre ton code à dispo>
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse.
    Citation Envoyé par g_rare
    voir déjà si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("file.encoding")
    renvoie la même chose chez eux et chez toi ?!
    Chez moi : cp1252
    Chez le client : cp1250
    Faut-ill modifier l'encodage? Si oui, comment?
    Citation Envoyé par g_rare
    <n'hésite pas à mettre ton code à dispo>
    Mon code est tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c = 230;
    String donneeSansEspace = donneeAvecEspace.replace( ' ', c );

  4. #4
    iuz
    iuz est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Points : 110
    Points
    110
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        String donneeSansEspace = donneeAvecEspace.replace(' ', '\u00e6');
    Ca devrait fonctionner, enfin j'espère

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par iuz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        String donneeSansEspace = donneeAvecEspace.replace(' ', '\u00e6');
    Ca devrait fonctionner, enfin j'espère
    Ce code donne le même résultat, j'ai le bon caractère sur ma machine mais toujours un '?' sur le poste slovène.

  6. #6
    iuz
    iuz est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Points : 110
    Points
    110
    Par défaut
    Unicode, sur 16 ou 7 bits, est un format universel ; le code source Unicode est directement portable sur toutes les plates-formes, dans toutes les langues
    Peut être que la machine client ne dispose pas de font permettant l'écriture du caractère. Dans ce cas il faut ajouter une font le prenant en charge et modifier le fichier font.properties du JDK.

    Si le problème ne vient pas de là, je suis désolé de ne pouvoir t'aider plus.

  7. #7
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    http://java.sun.com/docs/books/tutor...lestreams.html
    Remember that FileReader and FileWriter read and write 16-bit characters. However, most native file systems are based on 8-bit bytes. These streams encode the characters as they operate according to the default character-encoding scheme. You can find out the default character-encoding by using System.getProperty("file.encoding"). To specify an encoding other than the default, you should construct an OutputStreamWriter on a FileOutputStream and specify the encoding.
    http://java.sun.com/docs/books/tutor...vertintro.html
    In the Java programming language char values represent Unicode characters. Unicode is a 16-bit character encoding that supports the world's major languages. You can learn more about the Unicode standard at the Unicode Consortium Web site .
    http://java.sun.com/docs/books/tutor...xt/stream.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static void writeOutput(String str) {
     
        try {
        FileOutputStream fos = new FileOutputStream("test.txt");
        Writer out = new OutputStreamWriter(fos, "UTF8");
        out.write(str);
        out.close();
        } catch (IOException e) {
        e.printStackTrace();
        }
    }
    Java utilisant en interne UTF-16, tu devrais pouvoir t'en sortir avec le code (plus lisible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String resultat = monString.replace(' ','æ');
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 24
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par iuz
    Peut être que la machine client ne dispose pas de font permettant l'écriture du caractère. Dans ce cas il faut ajouter une font le prenant en charge et modifier le fichier font.properties du JDK.

    Si le problème ne vient pas de là, je suis désolé de ne pouvoir t'aider plus.
    Le problème ne vient pas de là, car le caractère peut être écrit sur la machine du client.

    Citation Envoyé par g_rare
    http://java.sun.com/docs/books/tutor...lestreams.html
    Remember that FileReader and FileWriter read and write 16-bit characters. However, most native file systems are based on 8-bit bytes. These streams encode the characters as they operate according to the default character-encoding scheme. You can find out the default character-encoding by using System.getProperty("file.encoding"). To specify an encoding other than the default, you should construct an OutputStreamWriter on a FileOutputStream and specify the encoding.
    Je pense que le problème viens bien de là, le fichier généré doit utiliser l'encodage par défaut du système du client.

    Citation Envoyé par g_rare
    Java utilisant en interne UTF-16, tu devrais pouvoir t'en sortir avec le code (plus lisible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String resultat = monString.replace(' ','æ');
    Apparement cela ne fonctionne pas.

    Citation Envoyé par g_rare
    http://java.sun.com/docs/books/tutor...xt/stream.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    static void writeOutput(String str) {
     
        try {
        FileOutputStream fos = new FileOutputStream("test.txt");
        Writer out = new OutputStreamWriter(fos, "UTF8");
        out.write(str);
        out.close();
        } catch (IOException e) {
        e.printStackTrace();
        }
    }
    Cela fonctionne parfaitement. Solution retenue.

    Merci à vous tous.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  3. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  4. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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