我从服务器电话中找回(Foursquare)场地的名称,其中返回的场地名称可以是英语或非英语。
假设场地名称位于JSON对象中,如下所示:
{...
"name":"venue name which can be in any language"
...}
我正在从此响应中创建一个JSONObject,然后按如下方式拉出场地名称:
String name = jsonObject.getString("name");
最后,我正在设置TextView的文本以显示场地名称,如下所示:
myTextView.setText(name);
然而,我发现阿拉伯名字中阿拉伯字符在原始JSON对象中加入(因为它们应该是),应用程序中显示的字符(即在TextView中)是不相交的。 (我对其他语言不太熟悉,所以无法确定它们是否也显示不正确。)
我应该做些什么来正确地从JSON对象中提取非英文名称并将其设置为TextView的文本,还是由电话决定文本的显示方式?< / p>
编辑:我尝试解析服务器响应(如@bbedward所建议),明确指定内容编码为UTF-8,如下所示......
HttpEntity httpEntity = httpResponse.getEntity();
String responseMessage = EntityUtils.toString(myHttpEntity, "UTF-8");
JSONObject jsonObject = new JSONObject(responseMessage);
......但仍然没有快乐。 (像以前一样,阿拉伯字符出现在他们应该联合起来的单词中。)这可能是电话的事情,还是需要做些额外的工作才能让单词/字符在非英语语言中显示出来?也许服务器需要明确指定值为“UTF-8”的“Content-Type”标头?
答案 0 :(得分:0)
无论如何我都会回答,我是猜测你没有得到你的json在UTF-8,因为我有类似的问题,我相信json不会以任何其他方式来
完成示例
唯一需要关注的是设置InputStreamReader的编码并创建JSONObject
private DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("http://myjsonurl.com/search?type=json");
// Depending on your web service
httppost.setHeader("Content-type", "application/json");
try
{
String result = null;
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
JSONObject myJObject = new JSONObject(sb.toString();
}
catch (Exception e)
{
}
finally
{
try{if(inputStream != null)inputStream.close();}catch(Exception none){}
}
答案 1 :(得分:0)
连接到mysql时添加此行:
mysql_set_charset('utf8', $con);
例如:
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_set_charset('utf8', $con);
mysql_select_db(DB_DATABASE);