麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

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

2024-09-04 11:47:54
字體:
來源:轉載
供稿:網友

可能用很多朋友使用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级探花 | 久草在线新时代视觉 | 热99精品视频 | 欧美成人黄色小视频 | 日韩激情一区 | 亚洲人成中文字幕在线观看 | 羞羞视频在线免费 | 91网视频在线观看 | 亚洲va在线 | 国产电影精品久久 | 免费嗨片首页中文字幕 | 欧美日本色 | 久久亚洲第一 | 欧美成人三级视频 | 久久激情小视频 | 免费欧美一级视频 | 男女羞羞视频 | 农村少妇吞精夜夜爽视频 | 视频一区二区三区在线播放 | 国产免费一区二区三区网站免费 | 黄网站免费入口 | 一区二区三区四区高清视频 | 一本一本久久a久久精品综合小说 | 国产精品一区在线看 | 午夜九九九 | 视频一区二区视频 | 逼特逼视频在线观看 | 中文字幕www | 免费观看一级淫片 | 国产91精品亚洲精品日韩已满 | 精品久久中文字幕 | 国产亚洲精品久久久久久久久 | 黄色一级片免费在线观看 | av日韩在线免费观看 | 毛片在线免费播放 |