php的json好像只支持utf-8,别的编码用iconv先转一下吧

解决方案 »

  1.   


    $str = '[{"category_name":"类别1","parent_cid":0,"lev":1,"cid":1,"display_order":1},{"category_name":"类别2","parent_cid":0,"lev":1,"cid":2,"display_order":2}]';
    $r = json_decode($str);
    echo '<pre>';print_r($r);
    Array
    (
        [0] => stdClass Object
            (
                [category_name] => 类别1
                [parent_cid] => 0
                [lev] => 1
                [cid] => 1
                [display_order] => 1
            )    [1] => stdClass Object
            (
                [category_name] => 类别2
                [parent_cid] => 0
                [lev] => 1
                [cid] => 2
                [display_order] => 2
            ))
      

  2.   

    所有編碼都設置為UTF-8就沒啥問題 json只支持UTF-8編碼的中文.
      

  3.   

    为什么你的JSON字符串里会有中文?自己拼装的吗?
    正常情况下中文应该是编码过的。
    如果不能改变文件保存的编码,把中文转码处理下就可以了。
      

  4.   

    你的json是自己写的而不是用json_encode生成的吧。
    用json_encode生成的会将中文转utf8。<?php
    $arr = array (
      array (
        'category_name' => '类别1',
        'parent_cid' => 0,
        'lev' => 1,
        'cid' => 1,
        'display_order' => 1,
      ),
      array (
        'category_name' => '类别2',
        'parent_cid' => 0,
        'lev' => 1,
        'cid' => 2,
        'display_order' => 2,
      )
    );echo json_encode($arr).'<br>';echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
    echo '<pre>';
    print_r(json_decode(json_encode($arr),true));
    echo '</pre>'
    ?>[{"category_name":"\u7c7b\u522b1","parent_cid":0,"lev":1,"cid":1,"display_order":1},{"category_name":"\u7c7b\u522b2","parent_cid":0,"lev":1,"cid":2,"display_order":2}]
    Array
    (
        [0] => Array
            (
                [category_name] => 类别1
                [parent_cid] => 0
                [lev] => 1
                [cid] => 1
                [display_order] => 1
            )    [1] => Array
            (
                [category_name] => 类别2
                [parent_cid] => 0
                [lev] => 1
                [cid] => 2
                [display_order] => 2
            ))