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) ;
?>
pacificrack怎么样?pacificrack商家发布了七月最新优惠VPS云服务器计划方案,推出新款优惠便宜VPS云服务器采用的是国产魔方管理系统,也就是PR-M系列,全系基于KVM虚拟架构,这次支持Windows server 2003、2008R2、2012R2、2016、2019、Windows 7、Windows 10以及Linux等操作系统,最低配置为1核心2G内存1Gbps带宽1...
tmhhost为2021年暑假开启了全场大促销,全部都是高端线路的VPS,速度快有保障。美国洛杉矶CN2 GIA+200G高防、洛杉矶三网CN2 GIA、洛杉矶CERA机房CN2 GIA,日本软银(100M带宽)、香港BGP直连200M带宽、香港三网CN2 GIA、韩国双向CN2。本次活动结束于8月31日。官方网站:https://www.tmhhost.com8折优惠码:TMH-SUMMER日本...
易速互联怎么样?易速互联是国人老牌主机商家,至今已经成立9年,商家销售虚拟主机、VPS及独立服务器,目前商家针对美国加州萨克拉门托RH数据中心进行促销,线路采用BGP直连线路,自带10G防御,美国加州地区,100M带宽不限流量,月付299元起,有需要美国不限流量独立服务器的朋友可以看看。点击进入:易速互联官方网站美国独立服务器优惠套餐:RH数据中心位于美国加州、配置丰富性价比高、10G DDOS免...