遇到个很幼稚的问题,用json_encode把数组转换为json时,发现转化的值为null。怎么回事呢?查找手册:发现了下面的话:
    该函数只能接受 UTF-8 编码的数据(译注:指字符/字符串类型的数据)
    原来数组中有中文,需要转码哦,写个转换字符编码的函数吧:

    1. function encodeConvert($str,$fromCode,$toCode)
    2. {
    3. if (strtoupper($toCode) == strtoupper($fromCode)) return $str;
    4. if (is_string($str)) {
    5. if (function_exists('mb_convert_encoding')) {
    6. return mb_convert_encoding($str, $toCode, $fromCode);
    7. } else {
    8. return iconv($fromCode, $toCode, $str);
    9. }
    10. } elseif (is_array($str)) {
    11. foreach ($str as $k => $v) {
    12. $str[$k] = encodeConvert($v, $fromCode, $toCode);
    13. }
    14. return $str;
    15. }
    16. return $str;
    17. }

    对于数组,通过下面方式json_encode调用,一切ok。

    $json_api=json_encode(encodeConvert($json_api,'gb2312','utf-8'));
    $json_api=json_decode(json_decode($json_api));