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 Discussion :

Encoder en UTF8


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 145
    Par défaut Encoder en UTF8
    bonjour,
    j'ai un problème pour encode en utf-8 une variable String.
    J'ai trouvé un code mais sa plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom = new String(((String) nom).getBytes("ISO-8859-1" ), "UTF-8" );
    je souhaiter encodé pour l'envoyer par json.

    je suis bloqué, ce code fonctionne avec les apostrophes mais pas avec les caractères possédant un accent.

    Merci pour votre aide

    bonne soirée

    Cédric

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Une String n'a pas d'encodage, et on ne peut donc pas "encoder une variable String en utf-8".
    Les encodages interviennent lors des conversions String -> byte[] et vice-versa.

    Tu dois donc considérer le problème autrement. La conversion doit être faite ailleurs, si tant est qu'il y ait besoin d'en faire une.
    Le plus simple est de chercher, qu'est-ce qu'elle devient, cette String ? À quoi est-ce que tu la confies pour t'en servir ? C'est à ce truc-là qu'il faut dire que l'encodage doit être utf-8... S'il ne le sait pas déjà. N'importe quelle bibliothèque JSON s'occupe de l'utf-8 toute seule sans qu'on lui demande.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 145
    Par défaut
    merci pour votre explication, en visualisant le code suivant

    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
     
     JSONObject detail1 = new JSONObject();
    	        	   detail1.put("TokenContact", TokenContact);
    	        	   detail1.put("TokenSociete", TokenSociete);
    	        	   detail1.put("nom", nom);
    	        	   jsonArray_contact.put(detail1);
     
    	        	   json_valeurs.put("Contact", jsonArray_contact);
    ...
    httppost.setHeader("json",json_valeurs.toString());
    				        httppost.getParams().setParameter("jsonpost",json_valeurs);
     
    				        // Execute requete HTTP Post 
    				        HttpResponse response =httpclient.execute(httppost);
    						HttpEntity entity = response.getEntity();
    						is = entity.getContent();
    Je me suis aperçu lors de la réception du côté serveur, les valeurs ne sont pas en UTF-8 mais en ISO. Donc il n'y a pas de transformation en UTF-8.
    Lorsque vous m'indiqué que n'importe quelle bibliothèque JSON s'occupe de l'utf-8 toute seule sans qu'on lui demande, cela veut il dire qu'il faut que j'installe une bibliothèque complémentaire ? Ou bien il me manque une indication dans script?

    Bonne journée
    Cédric

  4. #4
    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 drick35 Voir le message
    Je me suis aperçu lors de la réception du côté serveur, les valeurs ne sont pas en UTF-8 mais en ISO. Donc il n'y a pas de transformation en UTF-8.
    En même temps l'encodage n'est précisé nulle part.
    Donc il y a de forte chance que ce soit l'encodage par défaut de la machine qui soit utilisé...



    Tu utilises HttpClient d'Apache ?
    Je ne connais pas trop mais je pense qu'il faut utiliser HttpProtocolParams.setContentCharset() et/ou HttpProtocolParams.setHttpElementCharset() pour le définir...


    a++

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 145
    Par défaut
    merci pour votre aide, effectivement il y avait des paramétrages qui manquaient, connaissez vous un livre traitant la partie communication entre Android et serveur, car je lutte et perd pas mal de temps à parcourir les divers forum?

  6. #6
    Membre éprouvé
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Par défaut
    En matière de lecture j'ai trouvé celle là pas eu le temps de la lire plus avant mais de ce que j'en ai vu tu trouveras ton bonheur (bout de code explications simples, tout ça tout ça ).


    Bon courage

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    +1 adiGuba


    Citation Envoyé par drick35 Voir le message
    Lorsque vous m'indiqué que n'importe quelle bibliothèque JSON s'occupe de l'utf-8 toute seule sans qu'on lui demande, cela veut il dire qu'il faut que j'installe une bibliothèque complémentaire ?
    Je voulais dire que d'habitude les bibliothèques JSON s'occupent aussi d'envoyer/recevoir les données, et qu'elles le font en utf-8 sans qu'on leur demande.

    Ce n'est pas le cas de celle que tu utilises : tu fais toString() pour avoir une String, que tu t'occupes d'envoyer ensuite. Ce n'est pas spécialement mal, mais comme je l'ai dit, une String n'a pas d'encodage, et donc cette bibliothèque-ci ne peut pas s'occuper de l'encodage.
    Tu vas bel et bien devoir t'y coller, de la manière suggérée par adiGuba.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [IIS 7.5] Log : comment les encoder en UTF8, à la place de ANSI ?
    Par nicopulse dans le forum IIS
    Réponses: 6
    Dernier message: 15/03/2011, 19h31
  2. encoder en UTF8 le contenu d'un texbox
    Par Le gris dans le forum Windows Forms
    Réponses: 12
    Dernier message: 16/07/2009, 18h45
  3. Créer un fichier texte encodé en UTF8
    Par jmnicolas dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/08/2008, 11h23
  4. Lire des caractères encodés en UTF8
    Par ratapapa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/04/2008, 17h38
  5. Encoding ISO-8859-15 et UTF8
    Par calfater dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/06/2006, 21h12

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