java解析php函數json_encode unicode 編碼問題_java

來源:互聯網
上載者:User

android開發中在和伺服器端介面對接時出現編碼問題,從伺服器端擷取到的資料是 "\u8bbe\u59071ID-\u8bbe\u59071\u540d\u79f0;\u8bbe\u59073id-\u8bbe\u59073\u540d\u79f0;\u8bbe\u59077id-\u8bbe\u59077\u540d\u79f0" 介面是通過php函數中json_encode進行編碼後返回的,在用戶端通過java.net.URLdecoder.decode()解碼不管用,但是直接將以上字串複製到decode()方法中可以正常解碼,把接收到的字串經過utf-8編碼後不管用,最後在網上搜尋相關資料找到解決方案。

一,json_encode作用:

json_encode — 對變數進行 JSON 編碼。

說明:string json_encode ($value ),返回 value 值的  JSON 形式。

參數:待編碼的 value ,除了resource 類型之外,可以為任何資料類型

        該函數只能接受 UTF-8 編碼的資料(譯註:指字元/字串類型的資料)

傳回值:編碼成功則返回一個以 JSON 形式表示的 string 。

二,用戶端用java語言解碼:

第一種方法

public String unescapeUnicode(String str){  StringBuffer b=new StringBuffer();  Matcher m = Pattern.compile("\\\\u([0-9a-fA-F]{4})").matcher(str);  while(m.find())   b.append((char)Integer.parseInt(m.group(1),16));  return b.toString(); }

直接使用unescapeUnicode()方法解碼就可以了。

  2. 使用 json_simple.jar 包解析

  下載地址:http://www.jb51.net/softs/455885.html

  JSON.simple是一個簡單的Java類庫,用於解析和產生JSON文本。不依賴於其它類庫,效能高。

Object obj=JSONValue.parse(jsonStr);return obj.toString();


 PHP伺服器端解決方案:

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><title>php產生 json 中文</title><?php  function arrayRecursive(&$array, $function, $apply_to_keys_also = false) {  static $recursive_counter = 0;   if (++$recursive_counter > 1000)  {    die('possible deep recursion attack');  }   foreach ($array as $key => $value)  {    if (is_array($value))   {    //arrayRecursive($array[$key], $function, $apply_to_keys_also);   }   else  {    $array[$key] = $function($value);  }    if ($apply_to_keys_also && is_string($key))   {    $new_key = $function($key);     if ($new_key != $key)    {     $array[$new_key] = $array[$key];     unset($array[$key]);    }   }  } $recursive_counter--; }  function JSON($array) {  //arrayRecursive($array, 'urlencode', true);  //print_r($array); $json = json_encode($array);  return urldecode($json); }  $array = array  (    'Name'=>urlencode('php產生 json 中文'),    'Age'=>20   );  echo JSON($array);echo '</br>';echo urlencode('php產生 json 中文'); ?> </body></html>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.