设为首页收藏本站

就爱编程论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 741|回复: 3
打印 上一主题 下一主题

PHP json_encode传递中文为null [复制链接]

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    2025-5-27 03:37:20
  • 签到天数: 366 天

    [LV.9]以坛为家II

    论坛先锋 学习至圣 荣誉成员 论坛元老 活跃之星 终极领袖

    我玩的应用:

    跳转到指定楼层
    楼主
    发表于 2011-7-19 01:58:10 |只看该作者 |倒序浏览
    json_encode 和 json_decode
    这两个函数的具体用法 网上有很多相关的文章 ,本文主要介绍 用json_encode 时中文无法转换的解决方案,本文假设文件所用的编码为gb2312;
    先写出所需的数组

    <?php
    $json = array (
    0 =>
    array (
    'id' => '13',
    'name' => '乒乓球',
    ),
    1 =>
    array (
    'id' => '17',
    'name' => '篮球',
    )
    )
    ?>

    如果直接用PHP json_encode函数

    <?php
    echo json_encode($json);
    ?>

    结果为:

    <?php
    [{"id":"13","name":null}
    ,{"id":"13","name":null}]
    ?>

    可以看到汉字没有被转义都为null,这是因为json仅仅转义encoding编码(类似于:%B0%AE),故上面语句应该先转换编码

    <?php
    foreach ($ajax as $key=>$val)
    {
    $ajax[$key]['name'] =
    urlencode($val['name']);
    }
    echo json_encode($json);
    ?>

    客户端js代码

    <script type="text/javascript">
    function getsort(obj)
    {
    $.ajax(
    {
    type : "GET",
    url : "< ?=$this->baseUrl?>/index/getajax",
    data : "c=" obj.value,
    success : function(json)
    {
    var json=eval(json);
    var html = '< select>';
    $.each(json, function(k)
    {
    html = '< option value="'
    json[k]['id'] '">'
    decodeURI(json[k]['name']) '< /option>';
    });
    html ="< /select>";
    $('#sort').html(html);
    }
    }
    )
    }
    </script>

    用上面的代码js会报错 说编码不符合标准
    原因是因为js 中decodeURI 仅仅支持utf8 转码。所以 ,PHP json_encode函数的代码应该为下面的代码

    <?php
    foreach ($ajax as $key=>$val)
    {
    $ajax[$key]['name'] =
    urlencode(iconv('gb2312',
    'utf-8',$val['name']));
    }
    echo json_encode($json);
    ?>

    以上就是使用PHP json_encode函数在实际操作中出现问题的解决方法
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 支持支持0 反对反对0 分享到人人 转发到微博
    [img=http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=fRUcHhYWGAQ9GxIFEBwUEVMeEhA]http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_02.png[/img]

    使用道具 举报

    Rank: 2

    升级 
     
    0%

    该用户从未签到

    沙发
    发表于 2011-8-28 19:42:48 |只看该作者
    回不回呢,考虑再三,还是不回了吧。












    www.hanwensports.com 买大专文凭

    使用道具 举报

    Rank: 2

    升级 
     
    50%

    该用户从未签到

    板凳
    发表于 2011-9-12 17:10:37 |只看该作者
    真是好人啊~~













    使用道具 举报

    Rank: 2

    升级 
     
    71.33%

    该用户从未签到

    地板
    发表于 2011-10-2 20:43:32 |只看该作者

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    晴云孤魂's Blog|就爱编程搜帖|手机版|Archiver|就爱编程论坛     

    GMT+8, 2025-7-4 22:16 , Processed in 0.117389 second(s), 34 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部