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

Langage Java Discussion :

problème d'encodage de String


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut problème d'encodage de String
    bonsoir,
    pour faire bref,

    j'ai un fichier avec le mot: Hyōgo

    j'utilise la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //je récupère la chaine en lisant le fichier avec un scanner et je le met dans une variable que nous nommerons nom
    String stringISO = new String(nom.getBytes(), "UTF-8");
    Si j'affiche, je vois: Hy??go

    J'ai beau utiliser tout les charset de java, ça ne m'affiche pas correctement le nom.
    Que puis-je faire?
    merci.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    J'ai essayé d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reader = new BufferedReader(new InputStreamReader(new FileInputStream(nomFichier),"UTF-8"));
    vu dans la faq pour lire le fichier et le résultat est: Hy?go

    J'ai gagné un '?' mais c'est pas encore ça.

  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,

    Citation Envoyé par troussepoil Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //je récupère la chaine en lisant le fichier avec un scanner et je le met dans une variable que nous nommerons nom
    String stringISO = new String(nom.getBytes(), "UTF-8");
    nom est une String ? Dans ce cas ce code est complètement aléatoire et ne produit pas une chaine UTF-8 correcte !

    Je rappelle qu'en Java une String est toujours encodé en UTF-16 et qu'il est complètement incorrect de vouloir changer son encodage...

    Cela n'a intérêt que lorsqu'on "communique" avec d'autres sources de données (fichiers, base de donnée, ...).

    Citation Envoyé par troussepoil Voir le message
    J'ai essayé d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reader = new BufferedReader(new InputStreamReader(new FileInputStream(nomFichier),"UTF-8"));
    Dans ce cas vérifies que ton fichier soit bien correctement encodé en UTF-8 !
    Quel logiciel as-tu utilisé pour le générer ?


    a++

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Alors, je télécharge un fichier que je met sur mon disque. Lorsque je l'ouvre, je vois parfaitement les caractères.
    Je lis le fichier avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(nomFichier.txt),"UTF-8"));
     
    Scanner scanner = new Scanner(reader);
    champ = scanner.nextLine();
    lorsque je récupère les noms du fichier, je les stock dans une map
    Map(String, String)

    Du coup, si je comprend bien, les noms sont donc automatiquement codés en UTF-16.
    Si c'était en UTF-16, ne devrais-je pas pouvoir les voir correctement?
    Tout ce que je voudrais, c'est un affichage normal, un truc qui se lit...

  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 troussepoil Voir le message
    Alors, je télécharge un fichier que je met sur mon disque. Lorsque je l'ouvre, je vois parfaitement les caractères.
    Es-tu sûr que le fichier est encodé en UTF-8 ?
    Avec quel logiciel tu ouvres le fichier ?

    Citation Envoyé par troussepoil Voir le message
    Si c'était en UTF-16, ne devrais-je pas pouvoir les voir correctement?
    Cela dépend où tu les affiches :
    • Les consoles Windows possèdent un encodage qui ne supportes pas ces caractères et posent pas mal de problèmes.
    • Les composants AWT ne gère pas forcément bien tous les encodages (cela dépend du système).


    Par contre avec les applications Swing il n'y a pas de problème.
    Que te donne le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JOptionPane.showMessageDialog(null, champ);

    a++

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Es-tu sûr que le fichier est encodé en UTF-8 ?
    Avec quel logiciel tu ouvres le fichier ?
    Ben alors ça je sais pas. Je suis désolé mais je ne sais pas comment je peux voir. Je suis sous windows et je l'ouvre avec le bloc-notes.

    Cela dépend où tu les affiches :

    * Les consoles Windows possèdent un encodage qui ne supportes pas ces caractères et posent pas mal de problèmes.
    * Les composants AWT ne gère pas forcément bien tous les encodages (cela dépend du système).
    C'est dans la console d'eclipse que je regarde le résultat.
    ça voudrais dire que mes noms pourraient être bien encodés, que dans ma console eclipse je vois quelque chose et si je l'affiche ailleurs, je pourrais ne pas voir la même chose?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    avec
    JOptionPane.showMessageDialog(null, champ);

    je vois: HyÅ?go
    avec un petit carré à la place du '?'

  8. #8
    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
    Dans ce cas le fichier n'est pas encodé en UTF-8 ! Es-tu vraiment sûr de l'encodage ?


    a++


    PS : tu n'utilises plus le new String(nom.getBytes(), "UTF-8") au moins ?

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Dans ce cas le fichier n'est pas encodé en UTF-8 ! Es-tu vraiment sûr de l'encodage ?
    Non, je ne suis pas sur, je ne sais même pas comment je dois faire pour voir.

    Si je l'ouvre avec openOffice, il me demande comment je veux l'encoder. Si je dis UTF-8, est-ce que quand je vais l'enregistrer, il conservera l'encodage?

    tu n'utilises plus le new String(nom.getBytes(), "UTF-8") au moins ?
    Non, rassure toi, je n'utilise plus cette ligne.

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 98
    Par défaut
    Dans ce cas le fichier n'est pas encodé en UTF-8 ! Es-tu vraiment sûr de l'encodage ?
    Mais si quand j'ouvre le fichier, je vois les noms correctement, c'est que l'encodage est bon pour le fichier, à savoir UTF-8 (ou unicode, j'en sais rien).

Discussions similaires

  1. Problème d'encodage d'une string
    Par tabbabi dans le forum Android
    Réponses: 6
    Dernier message: 23/08/2011, 13h18
  2. String et problème d'encodage
    Par natoine dans le forum Langage
    Réponses: 1
    Dernier message: 15/03/2011, 16h28
  3. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  4. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42
  5. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06

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