本帖最后由 zhanghongjun1987 于 2012-04-16 16:23:39 编辑

解决方案 »

  1.   

    json_encode 可以传中文啊,传之前iconv就是了伐.
      

  2.   

    我现在是通过上面的方法时是可以得到json数据,但是解析不出来,我用var_dump()打印 报null
      

  3.   

    你把内容作了 url 编码,对方(比如js)拿到后如何知道需要解码呀?你应该在 arrayRecursive 函数里做 iconv('gbk', 'utf-8', $value) 编码转换
      

  4.   

    一般要这么写,你自己再封装一下$ar = array (
      '这里是 GBK 编码的数据',
      array(
        '这是一个测试',
        '这还是一个测试',
      ),
    );echo $s = json_encode( array_map('gb2utf',$ar));
    print_r(array_map('utf2gb', json_decode($s)));
    function gb2utf($v) {
      if(! is_array($v)) return iconv('gbk', 'utf-8', $v);
      foreach($v as &$t) $t = gb2utf($t);
      return $v; 
    }function utf2gb($v) {
      if(! is_array($v)) return iconv('utf-8', 'gbk', $v);
      foreach($v as &$t) $t = utf2gb($t);
      return $v; 
    }["\u8fd9\u91cc\u662f GBK \u7f16\u7801\u7684\u6570\u636e",["\u8fd9\u662f\u4e00\u4e2a\u6d4b\u8bd5","\u8fd9\u8fd8\u662f\u4e00\u4e2a\u6d4b\u8bd5"]]Array
    (
        [0] => 这里是 GBK 编码的数据
        [1] => Array
            (
                [0] => 这是一个测试
                [1] => 这还是一个测试
            ))
      

  5.   

    首先将数组转成utf-8的就可以编码中文了,没必要去写很多其它代码