Problème affichage caractères accentués
bonjour,
j'ai un problème de caractères accentués que je n'arrive pas à résoudre
j'ai un service web qui recupere des données en JSON via une base de données MySQL
Code:
1 2 3 4 5 6 7 8 9
| <?php
include("../includes/connect_mysql.php");
$dblink=connect_mysql();
$sql = mysql_query("SELECT ....",$dblink);
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?> |
ensuite je récupére correctement les données pour les afficher dans mon appli android, mais dès que j'ai des mots avec des accents (é,è, etc.), j'obtiens la chaîne "null" à la place
j'ai essayé de faire utf8_encode($output) avant d'encoder en json, mais cela ne fonctionne pas ... je n'obtiens alors que {Array,Array,...} au lieu d'avoir une structure complète et donc cela ne m'affiche plus rien
quelqu'un a t il une idée ?
voici le code android
Code:
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 37 38 39 40 41 42 43
| try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(strURL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection " + e.toString());
}
// Conversion de la requête en string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result " + e.toString());
}
// Parse les données JSON
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
// Affichage ID_login et Nom_login
//Log.i("log_tag","Numéro de membre : "+json_data.getInt("NumMembre")+
// ", Nom_login: "+json_data.getString("Login")
// );
// Résultats de la requête
returnString += "\n\t" + jArray.getJSONObject(i);
returnString2 += "\n\t" + json_data.getString("Auteur");
returnString2 += "," + json_data.getString("Titre");
returnString2 += "," + json_data.getString("year");
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data " + e.toString());
}
//byte[] result2 = returnString2.getBytes("UTF-8");
return returnString2; |
j'ai aussi essayé de convertir au niveau d'android avec getBytes mais je pense que je maitrise mal cette technique, car elle ne fonctionne pas non plus
merci