2011-03-15 45 views
3

我的應用程序的一部分在mysql數據庫上執行查詢(通過php)。我在數據庫UTF-8中使用,因爲我需要出現像éàê這樣的字母。 我讀過這個問題,因爲這看起來差不多。Android Java UTF-8 JSON

Android Java UTF-8 HttpClient Problem

然而,當我在執行的代碼,他替換的E爲空每個返回值。

這是我的代碼

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字符串替換他用它的「E」由空返回值。

最後一行是= 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(); 


    ?> 
+0

你確定你的web界面是UTF-8? – Hrk 2011-03-15 21:53:19

+0

你是什麼意思?這是我的PHP代碼... – user661434 2011-03-15 21:57:20

+0

你是否在你的PHP界面你要求提供你的UTF-8內容,而不是另一種編碼? – Hrk 2011-03-15 22:01:08

回答

4

嘗試其他頁面上的代碼後,我想從你的服務器的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) 
    { 
    } 
+0

嗨夥計!這實際上是訣竅!我用記事本中的逗號分隔文件寫了所有內容並上傳了它!現在我看到了口音! 非常感謝你! – user661434 2011-03-16 17:12:20