将TextView的文本设置为从JSON响应接收的非英语文本

时间:2012-03-13 13:50:28

标签: android textview

我从服务器电话中找回(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”标头?

2 个答案:

答案 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);