当前位置: 代码迷 >> PHP >> json_decode中文的有关问题
  详细解决方案

json_decode中文的有关问题

热度:51   发布时间:2016-04-28 19:09:32.0
json_decode中文的问题!
有如下的字符串:
[{"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}]

用json_decode转换成数组的时候就返回null, 查了一下是因为json_decode不支持中文。
如何才能将它转换成数组那?
网上查了很多方法都不行。
哪位提供个有效的方案啊。(不能改变文件的编码)
谢谢
------解决方案--------------------
你这个字符串是来自哪?剪辑器输入的还是从其他地方获取的?
------解决方案--------------------
php的json好像只支持utf-8,别的编码用iconv先转一下吧
------解决方案--------------------

$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
        )

)
------解决方案--------------------
所有編碼都設置為UTF-8就沒啥問題 json只支持UTF-8編碼的中文.
------解决方案--------------------
为什么你的JSON字符串里会有中文?自己拼装的吗?
正常情况下中文应该是编码过的。
如果不能改变文件保存的编码,把中文转码处理下就可以了。
------解决方案--------------------
你的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
        )

)