Android从mysql服务器获取包含特殊/复制粘贴字符的数据

时间:2012-08-31 08:34:10

标签: android mysql json special-characters htmlspecialchars

我需要从mysql数据库中获取一些数据。我正在运行一个查询数据库,json编码和打印它的PHP脚本。通过服务器中的php上的httppost从我的应用程序获取结果。我从服务器获取所有数据,除了一些包含特殊/非类型字符的条目。例如:“,” 对于这些条目我得到null.So除了用'''服务器端等类型字符替换这些字符...有什么办法可以用这些字符来获取这些数据以显示在应用程序上。 感谢。

 try{
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(KEY_121);
                    //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();

            }catch(Exception e){
                    Log.e("cxxn", "Error in http connection "+e.toString());
            }

            //convert response to string
            try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                            sb.append(line + "\n");
                    }
                    is.close();
                    result=sb.toString();
            }catch(Exception e){
                    Log.e("convt", "Error converting result "+e.toString());
            }

对于那些带有特殊字符的数据,结果具有空值。我应该更改我正在使用的编码吗? 编辑: MySQL字符集是:UTF-8 Unicode(utf8)

<?php

      mysql_connect("","","");

      mysql_select_db("fdict");

      $q=mysql_query("SELECT (Id), (WD), (des), (udte) FROM `dict`");

      while($e=mysql_fetch_assoc($q))

              $output[]=$e;

           print(json_encode($output));

    mysql_close();
?>

这是我的服务器端php代码。已删除服务器地址,传递。带有特殊字符的数据似乎只在json_encode()之后变为空.sql查询结果的回显显示没有任何空值的正确数据。请帮忙。我能做什么..?我有什么选择..?

感谢。

1 个答案:

答案 0 :(得分:1)

使用this解决了问题。  需要在SELECT查询之前放置mysql_query('SET CHARACTER SET utf8')。因此它将以utf8格式重新获得。