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) ;
?>
Sharktech荷兰10G带宽的独立服务器月付319美元起,10Gbps共享带宽,不限制流量,自带5个IPv4,免费60Gbps的 DDoS防御,可加到100G防御。CPU内存HDD价格购买地址E3-1270v216G2T$319/月链接E3-1270v516G2T$329/月链接2*E5-2670v232G2T$389/月链接2*E5-2678v364G2T$409/月链接这里我们需要注意,默...
TMThosting发布了一个2021 Summer Sale活动,针对西雅图VPS主机提供月付7折优惠码,年付65折优惠码,独立服务器提供95折优惠码,本轮促销活动到7月25日。这是一家成立于2018年的国外主机商,主要提供VPS和独立服务器租用业务,数据中心包括美国西雅图和达拉斯,其中VPS基于KVM架构,都有提供免费的DDoS保护,支持选择Windows或者Linux操作系统。Budget ...
外贸主机哪家好?抗投诉VPS哪家好?无视DMCA。ParkinHost今年还没有搞过促销,这次parkinhost俄罗斯机房上新服务器,母机采用2个E5-2680v3处理器、128G内存、RAID10硬盘、2Gbps上行线路。具体到VPS全部200Mbps带宽,除了最便宜的套餐限制流量之外,其他的全部是无限流量VPS。ParkinHost,成立于 2013 年,印度主机商,隶属于 DiggDigi...