JSON也是基于HTTP协议通信,其本身并不存在不支持中文的问题。可是,JSON中没有定义编码的地方,所以只能如此。

解决方案 »

  1.   

     $output=$oJSON->encode($olost_person);
        echo $output;$olost_person的是一个类的实例,在做以上这句之前用print_r输出如下
    lost_person Object
    (
        [name] => 小张
        [age] => 
        [sex] => F
        [latitude] => 30.25
        [longitude] => 120.17
    )
    $output输出为{"name":"\u0421\u0000","age":null,"sex":"F","latitude":"30.25","longitude":"120.17"}
      

  2.   

    1楼的大哥,偶不是很懂你说的,我没谈通信的问题,只是在服务器端,PHP的JSON库已经不认识中文了。
      

  3.   

    用JavaScript把他们给转换过来就可以了。
      

  4.   


    function escapeUnicode(str) {
      return str.replace(/[^ -~]|\\/g, function(m0) {
        var code = m0.charCodeAt(0);
        return '\\u' + ((code < 0x10)? '000' : 
                        (code < 0x100)? '00' :
                        (code < 0x1000)? '0' : '') + code.toString(16);
      });
    }
    function unescapeUnicode(str) {
      return str.replace(/\\u([a-fA-F0-9]{4})/g, function(m0, m1) {
        return String.fromCharCode(parseInt(m1, 16));
      });
    }
      

  5.   

    另一种方法,
    用unicode_decode把$oJSON->encode($olost_person)的结果转换之后返回
      

  6.   

    输出\uXXX的很正常,你decode就可以了...如果你的数据库是GBK的话,对JSON操作时要进行GBK和utf-8之间转换,我是这样处理的
    json_encode之前对中文字符转换成utf-8,json_decode之后,再转换出来为GBK
      

  7.   

    自己解决了,把PHP中的name用iconv('gb2312', 'utf-8', $row['name'])转换一下就可以了。