Encoder les caractères spéciaux de JSON (äöüß)
Je développe un allemand Application dès maintenant, il récupère les données à partir d'un JSON à une ListView. Puisqu'il y a certains caractères spéciaux tels que üöäß, avec mon code ci-dessous, les caractères sont affichés en tant que ?.
Quelqu'un peut-il m'aider à résoudre mon problème? Thx
public class LooserSync extends IntentService {
public LooserSync() {
super("LooserSyncService");
}
@Override
protected void onHandleIntent(Intent intent) {
Database.OpenHelper dbhelper = new Database.OpenHelper(getBaseContext());
SQLiteDatabase db = dbhelper.getWritableDatabase();
DefaultHttpClient httpClient = new DefaultHttpClient();
db.beginTransaction();
HttpGet request = new HttpGet(
"http://liebenwald.spendino.net/admanager/dev/android/projects.json");
try {
HttpResponse response = httpClient.execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream instream = response.getEntity().getContent();
BufferedReader r = new BufferedReader(new InputStreamReader(
instream), 8000);
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
}
instream.close();
String bufstring = total.toString();
JSONArray arr = new JSONArray(bufstring);
Database.Tables tab = Database.Tables.AllTables.get(Database.Project.NAME);
tab.DeleteAll(db);
for (int i = 0; i < arr.length(); i++) {
tab.InsertJSON(db, (JSONObject) arr.get(i));
}
db.setTransactionSuccessful();
}
} catch (Exception e) {
e.printStackTrace();
}
db.endTransaction();
db.close();
}
}
OriginalL'auteur hectichavana | 2011-05-26
Vous devez vous connecter pour publier un commentaire.
Contenu JSON utilise l'UTF-8 comme jeu de caractères par défaut (voir le RFC 4627, chapitre 3). Vous devez vous assurer que le serveur renvoie une réponse avec le bon encodage ET d'utiliser explicitement l'encodage UTF-8 pour le lecteur de flux:
OriginalL'auteur Laurent Etiemble
Essayer de définir explicitement un encodage pour la InputStreamReader, par exemple:
OriginalL'auteur Jörg
Utiliser le code suivant pour obtenir de l'allemand de données, car les données en UTF-8 standrd
Merci
Deepak
OriginalL'auteur Sunil Kumar Sahoo
Possible dupe de: Android Java UTF-8 HttpClient Problème.
En général, si ce que vous attendez n'est pas un caractère ASCII vous avez besoin de penser au sujet de l'encodage; ce que le serveur vous dit, c'est de l'encodage, et comment décoder correctement.
OriginalL'auteur Asim Ihsan
C'est l'en-tête de réponse de votre URL retourne:
La
Content-Type
en-tête est dépourvu d'un jeu de caractères de déclaration. Si vous pouvez changer, alors il devrait fonctionner.EDIT: Si vous ne pouvez pas changer cela, vous aurez besoin de coder en dur un jeu de caractères que le deuxième argument de la
InputStreamReader
.Olegas est droit. Actuellement, c'est de l'ISO-8859-1.
OriginalL'auteur RoToRa