TinyMind
.net.cn
首页
资讯
文章
注册
登录
json_encode 中文解决方法
hellovigoss
关注文章
TinyMind专栏频道
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
echo
json_encode
(
$json
);
?>
结果为:
<?php
[{
"id"
:
"13"
,
"name"
:
null
},{
"id"
:
"13"
,
"name"
:
null
}]
?>
可以看到汉字没有被转义都为null
这是因为json仅仅转义encoding编码
故上面语句应该先转换编码
<?php
foreach(
$ajax
as
$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(
$ajax
as
$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字,当前共
字
发送中
网络异常,请稍后重试
知道了
微信扫一扫
关注该公众号
0
│
收藏
│
举报