JSON - Umlaute und Escape Sequenzen

C

CROupier

Gast
Hallo, ich bin noch nicht so sehr mit Programmierung von Android Apps bzw. Java vertraut und hoffe daher, dass mir jemand hier bei meinem Problem weiter helfen kann. Wie schon erwähnt, geht es um JSON. Auf der Serverseite wende ich auf ein assoziatives Array die json_encode() Funktion an und bekomme folgenden JSON-kodierten String zurück:

PHP:
[
  {"name":"Robert","nachname":"Stra\u00dfer","url":"\/pictures\/robert.png"},
  {"name":"Thomas","nachname":"\u00dcberlin","url":"\/pictures\/thomas.png"}
]
Auf der Clientseite lese ich diesen, nachdem die Verbindung zum Server aufgebaut ist, aus und gebe ihn zum Testzwecken aus.

PHP:
HttpClient http_client = new DefaultHttpClient();
HttpGet http_get = new HttpGet(args[0]);
HttpResponse http_response = http_client.execute(http_get);
HttpEntity entity = http_response.getEntity();

input_stream = entity.getContent();    
input_stream_reader = new InputStreamReader(input_stream, "UTF-8");
buffered_reader = new BufferedReader(input_stream_reader);
                
while ((line = buffered_reader.readLine()) != null) {
  System.out.println(line);    
}
Bei der Ausgabe habe ich festgestellt, dass Umlaute falsch dargestellt werden - als Unicode-Entities, Escape-Sequencen verschwienden auch nicht. Wie kann ich dies am einfachsten bewerkstellingen??? Ich wollte schon ein Funktion schreiben, die den String nach entsprechenden Zeichen durchsucht und sie dann ersetzt. Oder gibt es eine andere Möglichkeit??? Vielen Dank im Voraus.
 
Sehr sehr wahrscheinlich in Encoding Problem. Das kann schon an den Dateien liegen, wie du sie in Eclipse verwendest. Stelle alles möglichst auf UTF-8 um, dann sollte es funktionieren.

Ich persönliche mag gson sehr, da hast du dieses Problem nicht, die Bibliothek parsed und serialisiert deine Objekte automatisch. Sehr nützlich: https://code.google.com/p/google-gson/
 
  • Danke
Reaktionen: Madlip
Mach ein Json Objekt aus deinem String :)

PHP:
HttpClient http_client = new DefaultHttpClient();
HttpGet http_get = new HttpGet(args[0]);
HttpResponse http_response = http_client.execute(http_get);
HttpEntity entity = http_response.getEntity();
String jsonString= EntityUtils.toString(entity );
JSONObject jsonObject = new JSONObject(jsonString);

Dann sollte die Umlaute alle korrekt sein, solange dein mit php erstelltes Json Objekt den Regeln entspricht, aber dafür sollte php mit json_encode ja sorgen....
 
Danke an beide !!!! :rolleyes2::thumbup:
 

Ähnliche Themen

N
  • no1Ltan
Antworten
5
Aufrufe
295
swa00
swa00
D
Antworten
4
Aufrufe
235
Appento
Appento
M
  • MikelKatzengreis
Antworten
5
Aufrufe
427
swa00
swa00
Zurück
Oben Unten