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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 éclairé
    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 : 48
    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
    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 averti
    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
    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 averti
    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
    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 averti
    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
    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 confirmé

    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
    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");

+ 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