json_encode 中文变成null

    添加时间:2013-8-5 点击量:
    今天在应用php时掉进了一个坑里,折腾了好久。

    在应用json_encode时,若是数组中存在中文,该中文输出为null。

     

    示例代码:



    <?php
    
    ¥brand = array(id=>123456,name=>联想);
    var_dump(json_encode(¥brand));
    ?>


    输出成果:



    string(27) {id:123456,name:null}


    “联想”变成null了。

    应用下面这个函数解决了此题目。



    <?php
    
    function gbk2utf8(¥data){
    ifis_array¥data)){
    return array_map(gbk2utf8, ¥data);
    }
    return iconv(gbk,utf-8,¥data);
    }
    ?>



    <?php
    
    ¥brand = array(id=>123456,name=>联想);
    var_dump(json_encode(gbk2utf8(¥brand)));
    ?>


    在json_encode之前做一下gbk2utf8转码,此时输出正确成果。



    string(37) {id:123456,name:\u8054\u60f3}


    \u8054\u60f3 为“联想”的unicode码,浏览器会主动转换成文字。



    容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永
    分享到: