Отправка данных в кодировке UTF-8 на сервер теряет определенные символы

Я работаю над проектом, который включает взаимодействие сервера (приложение JavaEE) и клиента (приложение Android). XML отправляется как один из параметров POST HTTP-запроса (с именем «xml»). Есть также несколько других параметров POST, которые я передаю серверу, но в функции ниже я удалил их для простоты. Возникающая проблема заключается в том, что определенные буквы не доставляются на сервер должным образом - например, символ Ű (обратите внимание, что это не немецкий Ü , который, кстати, доставляется правильно). Код для отправки следующий:

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;
}

Я предполагаю, что проблема заключается в BasicNameValuePair, который я использую для установки XML в качестве одного из параметров POST, и в документации говорится, что он использует набор символов US-ASCII. Как правильно отправлять поля POST в кодировке UTF-8?

42
задан Tuan 22 May 2014 в 10:21
поделиться