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 :

Problème des caractères spéciaux entre PHP et Java Android en utilisant Json encode


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 54
    Points
    54
    Par défaut Problème des caractères spéciaux entre PHP et Java Android en utilisant Json encode
    bonjour,
    comme je site dans le titre j'ai un problème d'encodage des caractères accentué .
    j'ai trouvé plusieurs solutions sur le web mais ça marche pas ou je sais pas comment les utilisé.
    au début : Je récupère toutes les données en php de la base myssql et j'utilise la fonction json_encode pour renvoyé les données a l'application . C'est là que ça plante. tous les champs où il y a un caractères avec accents est remplacé par null.
    les données sur la base provient soit d'un site web ( que je ne peux pas le modifier ) et il est codé en windows-1252 soi directement inséré avec wampPHP
    pour ça j'ai trouvé une solution
    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
    $liste_amis = $bdd->query('SELECT * FROM lieux');
     
     
     
    				$nombre_amis=0;
    				while($myliste=$liste_amis->fetch()){
     
     
    					foreach($myliste as &$value)
      						{
       						 $value = mb_convert_encoding($value, "UTF-8", "Windows-1252");
      						}
     
    					$output[]=array_map('utf8_encode', $myliste );
     
     
     
     
    					 }
     
     
    print(json_encode($output));
    mais ça marche que pour les données inséré avec wampPHP en plus elle s'affiche comme ça "discothA~que"

    et les restes des donné sont toujours null

    dans mon code java j'utilise le BufferedReader
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     try {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8192);
    // j'ai essayé aussi ça : new InputStreamReader(is, "iso-8859-1"), 8
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    int i = 0;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line);
                        i++;
     
                    }
    aidé moi SVP

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Norvège

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Points : 78
    Points
    78
    Par défaut
    tout d abord tu dois verifier ta version PHP puis ton php.ini puis tu met tout ton encodage en UTF-8

    un tuto pour birn metriser la formule json php


    http://nitschinger.at/Handling-JSON-like-a-boss-in-PHP

    en premier tu initializ ton encodage

    ini_set('default_charset', 'UTF-8');

    cette ligne apres l overture de connexion

    mysql_query("SET NAMES 'utf8' ;");

    voila deux fonction que j utilise



    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
     
    function myjsonencode($data) {
        //, ENT_QUOTES
     
       $data = htmlspecialchars($data, ENT_COMPAT | ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE,"UTF-8",TRUE); 
     
        return $data;
     
    //et 
     
    function escapeJsonString($value) {
                    $escapers =     array("\\",     "/",   "\"",  "\n",  "\r",  "\t", "\x08", "\x0c");
                    $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t",  "\\f",  "\\b");
                    $result = str_replace($escapers, $replacements, $value);
                    return $result;
                  }
     
     
    //puis  c est 
     
     
    escapeJsonString(myjsonencode($mavariable));
    change ton BufferedReader pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    					is, "UTF-8"), 8);

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Merci pour votre réponse mais ça marche toujours pas je suis coincé

    dans le Logcat ca donne ca : "discoth\u00c3\u00a8que"

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    j'ai trouvé une solution et ça marche parfaitement
    coté PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    mysql_query ( "'utf8' SET NAMES" );
    //--....... 
     while($myliste=$liste_amis->fetch()){
    $output[]=array_map('utf8_encode', $myliste);
    }
    print(json_encode($output,JSON_UNESCAPED_UNICODE));
    coté java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
    merci tous le monde

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Ma solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HttpPost httppost = new HttpPost(URL);
    httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    httppost.setEntity(new UrlEncodedFormEntity(ParamsNameValue(), "UTF-8"));
     
     
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);

  6. #6
    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
    encore mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HttpPost httppost = new HttpPost(URL);
    httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    httppost.setEntity(new UrlEncodedFormEntity(ParamsNameValue(), "UTF-8"));
     
    HttpResponse response = httpClient.execute(httppost);
    String result = EntityUtils.toString(response.getEntity(),"UTF-8");
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Dommage que le n'est pas plus visible, parce que tu viens de me le faire découvrir

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

Discussions similaires

  1. Débutant - Problème des caractères spéciaux
    Par powerwave dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/11/2014, 18h29
  2. Parsing d'un document XML : Problème des caractères spéciaux
    Par zomurn dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 18/08/2011, 16h50
  3. Problème des caractères spéciaux
    Par reito dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/07/2010, 16h20
  4. SOAP - Problèmes des caractères spéciaux
    Par InesNael dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/03/2008, 10h34
  5. Réponses: 2
    Dernier message: 07/09/2007, 13h26

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