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

Schreibe einen Kommentar