日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > PHP JSON_DECODE/JSON_ENCODE中文內容為NULL或亂碼

PHP JSON_DECODE/JSON_ENCODE中文內容為NULL或亂碼

來源:程序員人生   發布時間:2013-10-18 14:46:20 閱讀次數:3256次

可能用很多朋友使用json數據時利用php自帶的函數JSON_DECODE/JSON_ENCODE處理中文內容時會碰到出現NULL或亂碼問題,下面我來給大家介紹為什么會出現這樣的問題,例:

  1. <?php 
  2. $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
  3. var_dump(json_decode($json)); 
  4. var_dump(json_decode($json, true)); 
  5. ?> 

輸出結果

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

完全正確沒有任何問題,那么我們測試中文,代碼如下:

  1. <?php 
  2. $json = '{"a":"中國人人"}'
  3. var_dump(json_decode($json)); 
  4. ?> 

結果:{"text":null,"status":1},后來從php手冊中得出,json_encode 和 json_decode只支持utf-8編碼的字符,GBK的字符要用json就得轉換一下,這樣我們就好辦了

轉換一個編碼,代碼如下:

  1. /* 
  2.     字符串GBK轉碼為UTF-8,數字轉換為數字。 
  3. */ 
  4. function ct2($s){ 
  5.     if(is_numeric($s)) { 
  6.         return intval($s); 
  7.     } else { 
  8.         return iconv("GBK","UTF-8",$s); 
  9.     } 
  10. /* 
  11.     批量處理gbk->utf-8 
  12. */ 
  13. function icon_to_utf8($s) { 
  14.   if(is_array($s)) { 
  15.     foreach($s as $key => $val) { 
  16.       $s[$key] = icon_to_utf8($val); 
  17.     } 
  18.   } else { 
  19.       $s = ct2($s); 
  20.   } 
  21.   return $s
  22. echo json_encode(icon_to_utf8("廈門")); 

這樣還是有時會有問題,后來找了一種在json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字符串,最后再用urldecode()將編碼過的中文轉回來,寫了個函數:

  1. /************************************************************** 
  2. * 
  3. *    使用特定function對數組中所有元素做處理 
  4. *    @param    string    &$array        要處理的字符串 
  5. *    @param    string    $function    要執行的函數 
  6. *    @return boolean    $apply_to_keys_also        是否也應用到key上 
  7. *    @access public 
  8. * 
  9. *************************************************************/ 
  10. function arrayRecursive(&$array$function$apply_to_keys_also = false) 
  11.     foreach ($array as $key => $value) { 
  12.         if (is_array($value)) { 
  13.             arrayRecursive($array[$key], $function$apply_to_keys_also); 
  14.         } else { 
  15.             $array[$key] = $function($value); 
  16.         } 
  17.         if ($apply_to_keys_also && is_string($key)) { 
  18.             $new_key = $function($key); 
  19.             if ($new_key != $key) { 
  20.                 $array[$new_key] = $array[$key]; 
  21.                 unset($array[$key]); 
  22.             } 
  23.         } 
  24.     } 
  25. /************************************************************** 
  26. * 
  27. *    將數組轉換為JSON字符串(兼容中文) 
  28. *    @param    array    $array        要轉換的數組 
  29. *    @return string        轉換得到的json字符串 
  30. *    @access public 
  31. * 
  32. *************************************************************/ 
  33. function JSON($array) { 
  34.     arrayRecursive($array'urlencode', true); 
  35.     $json = json_encode($array); 
  36.     return urldecode($json); 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲一区免费观看 | 欧美韩日一区 | 免费a网 | 日日搞 | 黄网站在线免费 | 中文字幕123 | 日韩美女毛片 | 欧美精品久久久久久久久久 | 99精品视频免费在线观看 | 国产福利在线导航 | 免费的a级片 | 欧美三区 | 亚洲一区免费观看 | 久久久久久艹 | 久久久久久久久久久久91 | 99久久久久久| 在线观看麻豆视频 | www.操.com| 日本不卡高清视频 | 麻豆传媒免费 | 九九久久精品 | 国产一区二区视频在线播放 | 日韩欧美在线视频观看 | 久久免费看 | av麻豆 | 欧美精品一区在线观看 | 男女爱爱免费视频 | 国产精品国产三级国产aⅴ原创 | av一区二区三区四区 | 欧美理论在线观看 | 国产精品一区三区 | 淫影视 | 国产精品久久综合 | 韩国日本美国免费毛片 | 91av视频免费在线观看 | 久久久久久久精 | 国产精品第8页 | 亚洲福利一区二区三区 | 国产亚洲精品久久久久动 | 国产精品18久久久久久久网站 | 久久国产精品久久久久久久久久 |