Post UTF-8-codierte Daten zum Server verliert bestimmte Zeichen
Ich arbeite an einem Projekt, das beinhaltet die Kommunikation von dem server (Java ee app) und client (Android app). XML wird gesendet, wie eine POST-Parameter der HTTP-Anfrage (mit dem Namen "xml"). Es gibt auch einige andere POST-Parameter, die ich übergeben, um server, aber in der Funktion unten habe ich entfernt, die Ihnen für Einfachheit. Problem, das Auftritt, ist, dass bestimmte Buchstaben nicht richtig ausgeliefert, um die server - zum Beispiel Zeichen Ű
(Beachten Sie, dass diese nicht Deutsch ist Ü
die ordnungsgemäß geliefert, übrigens). Code für das senden ist die folgende:
private String postSyncXML(String XML) {
String url = "http://10.0.2.2:8080/DebugServlet/DebugServlet";
HttpClient httpclient = new DefaultHttpClient();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("xml",XML));
UrlEncodedFormEntity form;
try {
form = new UrlEncodedFormEntity(nameValuePairs);
form.setContentEncoding(HTTP.UTF_8);
HttpPost httppost = new HttpPost(url);
httppost.setEntity(form);
HttpResponse response = (HttpResponse) httpclient .execute(httppost);
HttpEntity resEntity = response.getEntity();
String resp = EntityUtils.toString(resEntity);
Log.i(TAG,"postSyncXML srv response:"+resp);
return resp;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Meine Vermutung ist, dass problem ist in der BasicNameValuePair ich verwenden um XML als eine der POST-Parameter, und es ist die Dokumentation sagt, es nutzt dem US-ASCII-Zeichensatz. Was ist die richtige Art und Weise zu senden, die UTF-8-codierten POST-Felder?
InformationsquelleAutor der Frage dstefanox | 2011-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach viel Forschung und versuchen, die Dinge zu arbeiten, fand ich endlich eine Lösung für das problem, dass eine einfache Ergänzung der bestehenden code. Lösung war die Verwendung der parameter "UTF-8" in der UrlEncodedFormEntity-Klasse-Konstruktor:
Nach dieser änderung, die Zeichen wurden codiert und ordnungsgemäß zugestellt, auf der server-Seite.
InformationsquelleAutor der Antwort dstefanox
Wenn Sie diese Zeile
müssen Sie den Zeichensatz wie diese
Können Sie gehen, um Android-Entwickler herausfinden.
Baut eine neue UrlEncodedFormEntity mit der Liste der Parameter mit der Standard-Kodierung von DEFAULT_CONTENT_CHARSET
InformationsquelleAutor der Antwort BobGao
Benutzer finalString in Ihrem post-Methode.
InformationsquelleAutor der Antwort AZ_
Oder kann ich fügen Sie folgenden code in scriptlet-an der Spitze von meinem test2.jspx, die das Problem lösen wird
InformationsquelleAutor der Antwort Amol Gaikwad
Ich auch vor ähnlichen Problem. Aber, um es zu überprüfen, ich schrieb unten zwei JSPs
-------------test1.jspx-----------------
Dann eingetragen unter akzentuierte Zeichen im ersten Eingabefeld
ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
Und das Problem ist deutlich sichtbar, dass der Android-browser nicht verarbeiten kann die UTF-8-Codierung
in der POST-Parameter.
Ich denke, ich muss die Methode GET verwenden und müssen hinzufügen "URIEncoding=UTF-8" für Anschluss in tomcat server.xml.
InformationsquelleAutor der Antwort Amol Gaikwad
Diesem wurde das problem Senden von UTF-8 Daten von Android. Dein code würde funktionieren, außer, dass Sie die Verschlüsselung Ihrer
String
zuBase64
. Auf dem Server PHP Sie nur entschlüsselnBase64
String zurück. Es funktionierte für mich. Ich kann teilen, wenn Sie müssen den code.InformationsquelleAutor der Antwort Mukund K Roy