【问题标题】:Android Java UTF-8 JSONAndroid Java UTF-8 JSON
【发布时间】:2011-03-15 21:40:08
【问题描述】:

我的应用程序的一部分在 mysql 数据库上执行查询(通过 php)。我在数据库中使用 UTF-8,因为我有需要出​​现的字母 é à ê。 我通读了这个问题,因为这看起来几乎一样。

Android Java UTF-8 HttpClient Problem

但是,当我实现代码时,他将每个返回值替换为 é 作为 null。

这是我的代码

HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "UTF-8");
        params.setBooleanParameter("http.protocol.expect-continue", false);
        HttpClient httpclient = new DefaultHttpClient(params);

             HttpPost httppost = new HttpPost("http://www.example.com/example.php");
             httppost.setEntity(new UrlEncodedFormEntity(query));
             HttpResponse response = httpclient.execute(httppost);


             HttpEntity entity = response.getEntity();
             String jsonText = EntityUtils.toString(entity, HTTP.UTF_8);
             Toast.makeText(StoresInfo.this, jsonText, Toast.LENGTH_LONG).show();
             is = entity.getContent();

因此,在 jsonText 字符串中,他将返回值替换为 null。

最后一行是 = entity.getConent();我添加这个是因为我通常使用输入流来读取它,但这也不起作用。

有人有想法吗?

这是我的 php 代码

<?php
     mysql_select_db("database");

        $q=mysql_query($_REQUEST['query']);

          while($e=mysql_fetch_assoc($q))

                $output[]=$e;
          print(json_encode($output));
    mysql_close();


    ?>

【问题讨论】:

  • 你确定你的网页界面是 UTF-8 的吗?
  • 什么意思?这是我的 php 代码...
  • 您的 PHP 界面是否为您提供 UTF-8 内容而不是其他编码?
  • 在 mysql 中,我使用的是带有 utf8_bin 的 varchar。
  • 我试图通过回显它来输出它,它向我显示了字母是...如果这是您问题的答案:-)

标签: android json utf-8


【解决方案1】:

在另一个页面上尝试您的代码后,我认为您的问题来自您的服务器 Web 界面。

例如,您可以在包含“é”字符的谷歌页面上尝试 GET 请求:

HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "UTF-8");
params.setBooleanParameter("http.protocol.expect-continue", false);
HttpClient httpclient = new DefaultHttpClient(params);

HttpGet httpget = new HttpGet("http://www.google.ch/search?sourceid=chrome&ie=UTF-8&q=www.google.frb%C3%A9b%C3%A9&qscrl=1#sclient=psy&hl=fr&qscrl=1&source=hp&q=b%C3%A9b%C3%A9&aq=&aqi=&aql=f&oq=&pbx=1&fp=b4d89b2783e136eb&pf=p&pdl=300");

    try
    {
         HttpResponse response = httpclient.execute(httpget);

         HttpEntity entity = response.getEntity();
         String jsonText = EntityUtils.toString(entity, HTTP.UTF_8);
         Log.d("TEST", jsonText);
         Toast.makeText(this, jsonText, Toast.LENGTH_LONG).show();
    }
    catch (Exception e)
    {
    }

【讨论】:

  • 嗨,伙计!这实际上成功了!我在记事本的逗号分隔文件中写了所有内容并上传了它!现在我看到了口音!非常非常感谢!
猜你喜欢
  • 2015-05-24
  • 2012-02-22
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2013-04-25
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多