android,PHP解析JSON數組,JSONArray,JSONOject,亂碼

來源:互聯網
上載者:User

unicode轉UTF-8,JSON_encode亂碼解決

--------------------------------------------------------------------------------------------------------------------------

前車之鑒,寫到這,希望能幫到路人...

小項目部分,有一部分要與伺服器通訊,反映在Android UI上,所以想到了高效的JSON

說說思路:

具體代碼如下:

public JSONArray getPhoneTopCategory()    {        String url=BASE_URL+"?option=GetTopCate";
     /*類比瀏覽器GET請求*/ HttpGet request=new HttpGet(url); JSONArray jsonArray=null; /*StringBulder,jdk_1.5新增,用法基本跟StringBuffer一樣,但效率要比StringBuffer高得多*/ StringBuilder sbuilder=new StringBuilder(); try { /*類比瀏覽器用戶端*/ HttpClient client = getHttpClient();
       /*擷取用戶端對瀏覽器發出請求後的響應情況*/ HttpResponse response=client.execute(request);
       /*測試是否請求成功*/ System.out.println(response.getStatusLine().getStatusCode()); if(response.getStatusLine().getStatusCode()==200) { BufferedReader reader = new BufferedReader (new InputStreamReader(response.getEntity().getContent(),"UTF-8")); for(String s=reader.readLine();s!=null;s=reader.readLine()) { //s=new String(s.getBytes("UNICODE"), "UTF-8"); sbuilder.append(s); } Log.i("json_str", sbuilder.toString());
          //這塊有必要說說,因為我返回的是一個二維數組,所以需要用到JSONArray的String(內容是數組格式)的建構函式
          //一直出現列印出來的是一串unicode碼,是因為解碼不對,得先將的到的字串,通過建構函式,編程JSONArray對象
         //然後,再利用JSONArray的getJSONObject方法,逐條將內容讀出,這樣,就正確的對JSON做瞭解析,不會出現列印出來
          //是一串unicode編碼的問題了,另外,廢話下,用戶端,返回JSON的頁面必須是UTF-8編碼,只有UTF-8才支援JSON,如果
          //是非UTF-8編碼,須提前將其他編碼格式轉化為UTF-8編碼,要不會出現亂碼甚至JSON為空白的現象,PHP別的編碼轉UTF-8
          //網上比較多,大家可自行尋找 
JSONArray json=new JSONArray(sbuilder.toString()); for(int i=0;i<json.length();i++) { System.out.println(json.getJSONObject(i).getString("Dname")); } //JSONArray jssonArray=json.toJSONArray(jssonArray); } }catch(Exception e) { e.printStackTrace(); } return jsonArray; }

PHP端,代碼,php為UTF-8編碼,可以利用Notepad++等轉換編碼方式

if($_POST['option']!=''){    switch($_POST['option'])    {        case 'GetTopCate':            $sql='select XX,XXX from XXX where Dpid=0';            $result=mysql_query($sql) or die(mysql_error());            $res=Array();            while($rows=mysql_fetch_assoc($result))            {                $res[]=$rows;            }            echo json_encode($res);            break;    }}

 

感到基礎不紮實,首先不知道JSON格式讀取出來本事是被轉換成UNICODE格式了的,以為是編碼問題,另外對JAVA的JSONArray,JSONObject不瞭解,哎,作繭自縛啊,欠賬太多了

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.