我有一个应用程序可以检索用户的数据(例如姓名),并通过 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' 如何解决?
谢谢