2013-08-28 40 views
0

我有一个应用程序,用于检索用户的数据(如名称),并通过Web服务将其发送到远程数据库。 我面临特殊口音问题,如在这个名字'Tağıyeva'适用于Android和Web服务的适当字符集

名称存储为数据库中的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。如何解决这个问题?

UPDATE:现在我收到的JSON看起来像这样 “名”: “新罕布什尔\ u00e1 \ u00ba \ u00adt丕\ u00e1 \ u00bb \ u00abn钽\ u00c4 \ u009f \ u00c4 \ u00b1yeva” 我用它为了将InputStream转换为字符串

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

但是字符串显示不正确。 enter image description here而不是'NhậtPiừnTağıyeva' 如何解决它?

感谢

回答

1
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); 

我希望这会帮助你。

+0

问题更新。 –

1

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

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs),"UTF-8"); 
+0

问题已更新。 –

0

的数据格式是JSON,我没有提到(和托斯已经承担)。使用Android的JSON解析器会自动正确解码字符。自己解析JSON在很多层面上显然是愚蠢的想法。

Check this

+0

我已经在使用JSONObject和JSONArray,谢谢。问题是服务器返回的名称与存储在数据库中的名称不同。此时我可能会犯一个错误。检查我的问题在最上面。 –

相关问题