php和json_encode中文解决方法json_encode中文解决方法json是一个很好的数据结构现在已经广泛用在网络数据传输上php 自身待了两个和json相关的函数json_encode 和json_decode
这两个函数的具体用法网上有很多相关的文章
本文主要介绍用json_encode时中文无法转换的解决方案本文假设文件所用的编码为gb2312
先写出所需的数组
<?php
$j son = array (
0 =>array (
) ,
1 =>array (
)
)
?>
如果直接用函数json_encode
<?phpecho json_encode($json) ;
?>
结果为
<?php
[ {"i d":"13", "name":nul l} , {"i d":"13", "name":nu l l} ]?>
可以看到汉字没有被转义 都为null
这是因为json仅仅转义encoding编码
故上面语句应该先转换编码
<?phpforeach ($ajax as $key=>$val)
{
$ajax[$key] ['name' ] =urlencode($val['name' ] ) ;
}echo json_encode($json) ;
?>
客户端js代码
<script type="text/javascript">function getsort(obj)
{
$.ajax(
{typ e : "GET",url : "<?=$this->baseUrl?>/index/getajax",data :,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
代码应该为下面的代码
<?phpforeach ($ajax as $key=>$val)
{
$ajax[$key] ['name' ] =urlencode(iconv('gb2312' , 'utf-8' ,$val['name' ] )) ;}echo json_encode($json) ;
?>
wordpress简洁英文主题,wordpress简洁通用大气的网站风格设计 + 更适于欧美国外用户操作体验,完善的外贸企业建站功能模块 + 更好的移动设备特色模块支持,更高效实用的后台自定义设置 + 标准高效的代码程序功能结构,更利于Goolge等国际搜索引擎的SEO搜索优化和站点收录排名。点击进入:wordpress简洁通用型高级外贸主题主题价格:¥3980 特 惠 价:¥1280安装环境:运...
触摸云触摸云(cmzi.com),国人商家,有IDC/ISP正规资质,主营香港线路VPS、物理机等产品。本次为大家带上的是美国高防2区的套餐。去程普通线路,回程cn2 gia,均衡防御速度与防御,防御值为200G,无视UDP攻击,可选择性是否开启CC防御策略,超过峰值黑洞1-2小时。最低套餐20M起,多数套餐为50M,适合有防御型建站需求使用。美国高防2区 弹性云[大宽带]· 配置:1-16核· ...
修罗云怎么样?修罗云是一家国内老牌商家,修罗云商家以销售NAT机器起家,国内的中转机相当不错,给的带宽都非常高,此前推荐的也都是国内NAT VPS机器。今天,云服务器网(www.yuntue.com)小编主要介绍一下修罗云的香港云服务器,适合建站,香港沙田cn2云服务器,2核2G,5M带宽仅70元/月起,同时香港香港大带宽NAT VPS低至50元/月起,性价比不错,可以尝试一下!点击进入:修罗云官...