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 :

[encodage]String en UTF8 et combobox


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 79
    Points
    79
    Par défaut [encodage]String en UTF8 et combobox
    Bonjour
    voila je dois lire un fichier encoder en utf8. (différent langue européenne dans ce fichier ). J'ai un fonction qui lie ce fichier et qui renvoie une arraylist de String.

    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
    36
     private ArrayList<String> SearchAuthority(Object selectedItem) {
            BufferedReader reader = null;
            ArrayList<String> list = new ArrayList<String>();
            try {
     
                File fs = new File("C:\\Documents and Settings\\adamre\\My Documents\\NetBeansProjects\\EFormMockUp\\src\\eu\\europa\\ec\\eforms\\informationexchange\\v0\\gui\\InformationExchangeACKFormRequestedAuthority.properties");
                reader = new BufferedReader(new InputStreamReader(new FileInputStream(fs), "UTF8"));
                String line;
                int i = 0;
     
     
                while ((line = reader.readLine()) != null) {
                    if (line.substring(0, 2).equals(selectedItem.toString())) {
                        String essai = new String(line.substring(3).getBytes(), "UTF8");
                        byte[] essai2 = line.substring(3).getBytes("UTF-8");
                        System.out.println(essai2);
                        list.add(essai);
                        System.out.println("TROUVE");
     
                    }
                    i++;
                }
     
            } catch (FileNotFoundException ex) {
                Logger.getLogger(InformationExchangeACKForm.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(InformationExchangeACKForm.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    reader.close();
                } catch (IOException ex) {
                    Logger.getLogger(InformationExchangeACKForm.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            return list;
        }
    ensuite j'ai fait donc cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            ArrayList<String> requestedAuthority = SearchAuthority(comboBoxMemberState.getSelectedItem().toString());
            comboBoxRequestedAuthority.removeAllItems();
            for(String Authority: requestedAuthority){
                try {
                    System.out.println(Authority);
     
                    comboBoxRequestedAuthority.addItem(new String(Authority.getBytes(), "UTF8"));
                } catch (UnsupportedEncodingException ex) {
                    Logger.getLogger(InformationExchangeACKForm.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

    Dans ma combobox il y a toujours des caractères non reconnu j'ai essayé plein de truc et je m'y perd un peu. C'est donc un probleme encodage des string.

    Est ce que quelqu'un peux m'aider.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 859
    Points
    1 859
    Par défaut
    Euh... L'encodage par défaut de Java étant l'UTF8, pourquoi vous donner tout ce mal?

  3. #3
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 79
    Points
    79
    Par défaut
    ben parceque ca marche pas de base et que les accents, le grec, et tous les caractères spéciaux ne marche pas.

    Je pensait que java était en unicode. Je pensais mal?

  4. #4
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Je sais pas si cela pourra t-être utile

    J'ai une application multilingue francais,anglais espganol et polonais
    J'ai un fichier polonais.properties.native avec tout les accents.

    dans un petit fichier .bat j'ai la ligne de code suivante :

    c:\chemin du jdk\bin\native2ascii.exe polonais.properties.native polonais.properties

    j'obtiens alors un fichier avec tous les caractères encodés et ceci apparaissent correctement à la lecture

  5. #5
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 79
    Points
    79
    Par défaut
    alors j'ai réglé en partie mon prob mais j'ai encore des caractères non reconnus comme le grec et le chypriote (les caractères cyrilliques quoi).

    J'ai juste tout laissé par défaut sans rien toucher à l'encodage et juste au dernier moment j'encode mon string. Pour toutes les langues avec un alphabet comme le francais ca fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.out.println(Authority);
                    String Au = new String(Authority.getBytes(), "UTF8");
                    comboBoxRequestedAuthority.addItem(Au);

  6. #6
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 79
    Points
    79
    Par défaut
    rebonjour j'ai toujours un probleme avec l'encodage.

    Je reçoit un objet dont un attribut est un string. quand je fais getMystring() voila ce qu'il me donne : Le problème c'est que je doit le comparer avec "Impôt sur le revenu" et même en l'encodant en UTF8 ca passe pas.

    Sachant que je travaille sur toute les langues de l'union européenne dont les alphabets syrillique pour le grec et le chypriote.

    est ce que quelqu'un peut m'aidez?

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


    Ce genre de code est totalement faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String essai = new String(line.substring(3).getBytes(), "UTF8");
    getBytes() renvoi le tableau de byte selon l'encodage par défaut du système, qui n'est pas forcément UTF-8, et tu interprètes cela comme de l'UTF-8 ce qui génère n'importe quoi !


    L'encodage ne doit être spécifié que lorsque tu lis un fichier ou que tu l'écris. En interne tout est stocké en Unicode et il n'y a pas de conversion à faire.

    Donc si ton fichier est bien encodé en UTF-8 il suffit de spécifier l'encodage lors de la lecture du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	reader = new BufferedReader(new InputStreamReader(new FileInputStream(fs), "UTF8"));
    	String line;
     
    	 while ((line = reader.readLine()) != null) {
    		if (line.substring(0, 2).equals(selectedItem.toString())) {
    			String essai = line.substring(3);
    			list.add(essai);
    		}
    	}
    a++

  8. #8
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2004
    Messages : 103
    Points : 79
    Points
    79
    Par défaut
    ok j'ai compris. merci


    mais j'ai encore un autre probleme concernant l'encodage.

    J'ai deux variable l'une c'est ce que à été lu dans le fichier(donc en utf8) et l'autre dont je ne connais pas l'encodage mais quand je l'affiche, cela donne : Imp?t sur le revenu


    Comment comparer ces deux chaines?

Discussions similaires

  1. Probleme encodage string
    Par barths dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 17/10/2008, 10h15
  2. [MySQL] Encodage des caractères utf8
    Par rider74 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 11/06/2008, 18h28
  3. C++ encodage Iso latin1,UTF8
    Par kouack dans le forum C++
    Réponses: 16
    Dernier message: 25/04/2008, 22h17
  4. Encodage Debian avant UTF8
    Par narmataru dans le forum Administration système
    Réponses: 5
    Dernier message: 08/02/2008, 15h01
  5. Encodage iso et utf8 ..
    Par questionneuse dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/06/2006, 18h20

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