json_encode 中文解决方法


json是一个很好的数据结构现在已经广泛用在网络数据传输上

php自身待了两个和json相关的函数
json_encode和json_decode

这两个函数的具体用法网上有很多相关的文章
本文主要介绍用json_encode时中文无法转换的解决方案

本文假设文件所用的编码为gb2312;

先写出所需的数组

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

如果直接用函数json_encode

<?php

echojson_encode($json
);
?>

结果为:

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


可以看到汉字没有被转义都为null

这是因为json仅仅转义encoding编码

故上面语句应该先转换编码

<?php

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

?>

客户端js代码


<scripttype="text/javascript">
functiongetsort(obj)
{
$.ajax(
{
type:"GET",
url:"<?=$this->baseUrl?>/index/getajax",
data:"c="obj.value,
success:function(json)
{
varjson=eval(json);

varhtml='<select>';
$.each(json,function(k)
{
html='<optionvalue="'json[k]['id']'">'decodeURI(json[k]['name'])'</option>';
});
html="</select>";
$('#sort').html(html);
}
}
)
}
</script>


用上面的代码js会报错说编码不符合标准

原因是因为js中decodeURI仅仅支持utf8转码
所以
php
代码应该为下面的代码

<?php

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

?>
优质内容筛选与推荐>>
1、linux 下解压rar文件
2、存储基础篇之硬盘一(工作原理)
3、注册EventHandler
4、express 的路由分离
5、为什么出口竞争越来越激烈了?


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn