0

我有一个应用程序可以检索用户的数据(例如姓名),并通过 Web 服务将其发送到远程数据库。我面临着特殊口音的问题,比如这个名字“Tağıyeva”

该名称在数据库中存储为 Ta?ıyeva。

这是我用来发送数据的

static String postData(List<NameValuePair> nameValuePairs, String url) {
        InputStream ips = null;
        try {
            HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); 
            HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
            DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);
            HttpPost httppost = new HttpPost(MyInternetManager_Class.url+url);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            ips = response.getEntity().getContent();
            String contentAsString = isToString(ips);
            if (MyInternetManager_Class.debug) Log.e("recu",contentAsString);
            if (response.getStatusLine().getStatusCode() != 200 || contentAsString.length() == 0) return "-1"; // erreur serveur
            else return contentAsString;
        }
        catch (IOException e) {
            //...
        } 
        finally {
            try {if (ips != null) ips.close();} catch (IOException e){}
        }
    }

如您所见,我已经使用了默认字符集(它是哪一个?)。我的服务器设置为 UTF-8。如何解决问题?

更新:现在我收到的 JSON 看起来像这样“名称”:“Nh\u00e1\u00ba\u00adt Pi\u00e1\u00bb\u00abn Ta\u00c4\u009f\u00c4\u00b1yeva”我使用它来将 InputStream 转换为字符串

static String isToString(InputStream stream) {
        Scanner s = new Scanner(stream, "UTF-8").useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
    }

但是字符串显示不正确。 在此处输入图像描述而不是 'Nhật Piừn Tağıyeva' 如何解决?

谢谢

4

3 回答 3

1

根据这些文档,您使用的UrlEncodedFormEntity构造函数默认为 ISO-8559-1 字符集。您可以(看起来应该)将 UTF-8 作为第二个参数传递:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs),"UTF-8");
于 2013-08-28T14:18:13.243 回答
1
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

我希望这能帮到您。

于 2013-08-28T14:15:37.093 回答
0

数据格式是 JSON,我没有提到(Thanatos 已经假设了)。使用Android 的 JSON 解析器将自动正确解码字符。自己解析 JSON 在多个层面上显然是一个愚蠢的想法。

检查这个

于 2013-08-29T03:30:21.543 回答