Dies ist eine Folgefrage zu Android mit php: Speichern von UTF-8-Zeichenfolge in MySQL
Ich verwende die Gson-Bibliothek in Android, um eine Klasseninstanz in eine JSON-Zeichenfolge umzuwandeln. Diese JSON-Zeichenfolge wird dann mit HttpPost an ein PHP-Skript hochgeladen, um sie in meiner MySQL-Datenbank zu speichern.
Anfangs dachte ich, dass das Problem mit php oder MySQL zusammenhängt, aber es scheint jetzt, dass mein HttpPost-Code die JSON-Zeichenfolge nicht ordnungsgemäß in UTF-8 kodiert. Wenn ich meinen Code debugge und eine POST-Anfrage innerhalb von Chrome mit der JSON-Zeichenfolge durchführe, funktioniert es einwandfrei.
Meine MySQL-Datenbank ist jetzt im UTF-8-Format formatiert (utf8_general_ci).
Hier ist mein HttpPost-Code:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
ArrayList parameters = new ArrayList();
parameters.add(new BasicNameValuePair("fragebogen", json));
httppost.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8"));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Das Problem könnte in httppost.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8"));
liegen, aber ich bin mir nicht sicher, wie ich meinem PHP-Skript anderweitig mitteilen kann, dass ich JSON im UTF-8-Format sende.
Als Beispiel wird "can't get there" von Android korrekt als "can/u0027t get there" codiert, wenn die JSON-Zeichenfolge von Gson erstellt wird. Nach dem Hochladen des JSON auf PHP wird es als "canu0027t get there" ohne das "\" in der MySQL-Datenbank gespeichert.
Wie kann ich also diese JSON-Zeichenfolge in Android ordnungsgemäß als UTF-8-Format kennzeichnen, damit sie richtig gespeichert wird?