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

Android Studio Java Discussion :

Android Studio encoding problème item de la listview


Sujet :

Android Studio Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 106
    Points : 85
    Points
    85
    Par défaut Android Studio encoding problème item de la listview
    Salut, j'ai un problème avec l'encodage des item de la ListView sous Android Studio.

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    this.setTitle("é ç è ");
     
    ArrayList<String> Array = new ArrayList<String>();
    ServicesArray.add("é ç   è");
    ServicesArray.add("à de");
    ServicesArray.add("chére");
    List = (ListView)findViewById(R.id.LV_List );
    LV_List.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_activated_1,Array));

    Et voila ce que j'ai comme résultat:


    PS: Sachant qu'avec le même code j'ai pas ce problème avec eclipse.


    Merci d'avance

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Tout dépends de la conf.

    Pour cela il faut forcer les Strings a un Charset

    http://developer.android.com/reference/java/lang/String.html#String(byte[], java.lang.String)

    Pour ton cas UTF-8:
    http://developer.android.com/referen...t/Charset.html

    Mouarf j'avais mal lu la question, un lien qui pourrait t'aider .
    http://stackoverflow.com/questions/1...ng-in-debug-or


    Annoncé corrigé sur la dernière version mais je ne le trouve pas dans les issues :
    http://code.google.com/p/android/iss...rs&cells=tiles
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 106
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Bonjour,

    Tout dépends de la conf.

    Pour cela il faut forcer les Strings a un Charset

    http://developer.android.com/reference/java/lang/String.html#String(byte[], java.lang.String)

    Pour ton cas UTF-8:
    http://developer.android.com/referen...t/Charset.html
    Bonjour, j'avais déjà essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try
    	    {
    	        Array.add(new String("chére".getBytes("UTF-8"),"UTF-8"));
    		Array.add(new String("chére".getBytes(),"UTF-8"));
    	    }
    	    catch (Exception ex){}
    Toujours le même problème



    Citation Envoyé par Feanorin Voir le message
    Mouarf j'avais mal lu la question, un lien qui pourrait t'aider .
    http://stackoverflow.com/questions/1...ng-in-debug-or


    Annoncé corrigé sur la dernière version mais je ne le trouve pas dans les issues :
    http://code.google.com/p/android/iss...rs&cells=tiles


    J'ai la dernière version d'Android Studio




    Merci beaucoup pour de attention

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Non mais le code lui même est sensé (en java) être ISO-8859-1 par défaut... donc il faut utiliser la notation unicode ("\u00e9" par exemple pour le 'é') pour que certains caractères spéciaux passent...
    Il me semble que l'éditeur de ressources utilise de toute manière le bon format.


    Quant à "chére".getBytes() il renvoit de l'UTF-16... donc... l'utiliser comme UTF-8 est clairement pas bon.


    Par contre, en UTF-8 le 'é' se code: 0xc3 0xa9... soit Ã(c) (en ISO-8859-1)
    Donc on dirait que l'éditeur est en UTF-8 (et sauve le fichier en tant que UTF-8), mais le compilateur compile (comme il devrait toujours) en le lisant en ISO-8859-1

    De toute manière, c'est simple... ouvrir le fichier avec un editeur hexadécimal, et regarder ce qu'il y a dedans: 0xc3 0xa9 ? le ficher a été sauvé en UTF-8 et c'est pas bon. 0xe9 ? le fichier est correctement en ISO-8859-1

    Dans Eclipse, l'éditeur est par défaut en ISO-8859-1, et la compilation Java devrait afficher un warning sur le fichier en question (en ISO), Eclipse étant parfois suffisamment intelligent pour compiler en UTF-8.


    Dans tous les cas, utiliser la notation \u devrait résoudre le problème, et éviter ce genre de mésaventure.
    De toute manière, il ne peut pas par définition y avoir de caractères spéciaux dans un code... si cela arrive c'est que la chaîne est "localisée" et devrait donc être dans les ressources.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Informatique et Développeur Android
    Inscrit en
    Janvier 2010
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Informatique et Développeur Android

    Informations forums :
    Inscription : Janvier 2010
    Messages : 384
    Points : 321
    Points
    321
    Par défaut
    Bonjour,
    tu peux passer par le fichier Strings.xml puis tu charge tes Strings depuis cette fichier.
    ça evite le problème d'encodage que peut être lié dans le config.

    Merci.
    Younes

  6. #6
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 106
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Non mais le code lui même est sensé (en java) être ISO-8859-1 par défaut... donc il faut utiliser la notation unicode ("\u00e9" par exemple pour le 'é') pour que certains caractères spéciaux passent...
    Il me semble que l'éditeur de ressources utilise de toute manière le bon format.


    Quant à "chére".getBytes() il renvoit de l'UTF-16... donc... l'utiliser comme UTF-8 est clairement pas bon.


    Par contre, en UTF-8 le 'é' se code: 0xc3 0xa9... soit Ã(c) (en ISO-8859-1)
    Donc on dirait que l'éditeur est en UTF-8 (et sauve le fichier en tant que UTF-8), mais le compilateur compile (comme il devrait toujours) en le lisant en ISO-8859-1

    De toute manière, c'est simple... ouvrir le fichier avec un editeur hexadécimal, et regarder ce qu'il y a dedans: 0xc3 0xa9 ? le ficher a été sauvé en UTF-8 et c'est pas bon. 0xe9 ? le fichier est correctement en ISO-8859-1

    Dans Eclipse, l'éditeur est par défaut en ISO-8859-1, et la compilation Java devrait afficher un warning sur le fichier en question (en ISO), Eclipse étant parfois suffisamment intelligent pour compiler en UTF-8.


    Dans tous les cas, utiliser la notation \u devrait résoudre le problème, et éviter ce genre de mésaventure.
    De toute manière, il ne peut pas par définition y avoir de caractères spéciaux dans un code... si cela arrive c'est que la chaîne est "localisée" et devrait donc être dans les ressources.

    Merci beaucoup, sa ma permis de bien comprendre le problème et donc j'ai fini par le résoudre en basculant l'encodage du fichier java de UTF-8 par ISO-8859-1.

    Citation Envoyé par tlili_info Voir le message
    Bonjour,
    tu peux passer par le fichier Strings.xml puis tu charge tes Strings depuis cette fichier.
    ça evite le problème d'encodage que peut être lié dans le config.

    Merci.
    Younes
    Younes aussi votre solution semble la plus correcte ^^ mais j'ai pas beaucoup de chaines, c'est pour ça j'ai basculé l'encodage.




    Un grand merci a tous pour votre attention

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

Discussions similaires

  1. Problème install Android Studio
    Par PHCME dans le forum Android Studio
    Réponses: 2
    Dernier message: 25/07/2014, 14h37
  2. débutant android studio problème
    Par giovanni dans le forum Android Studio
    Réponses: 2
    Dernier message: 19/01/2014, 23h27
  3. Android slider les items d'un listview
    Par Rohan21 dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 11/10/2013, 11h44
  4. Items dans une ListView, problème d'interaction
    Par Matf4ke dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 23/11/2012, 18h20
  5. Réponses: 8
    Dernier message: 09/05/2007, 01h35

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