我们今天将要为大家带来的内容是php json_encode函数在处理中文转换时出现问题的解决方法。json 是一个很好的数据结构现在已经广泛用在网络数据传输上,
json_encode 和 json_decode
这两个函数的具体用法 网上有很多相关的文章 ,本文主要介绍 用json_encode 时 中文无法转换的解决方案,本文假设文件所用的编码为gb2312;
先写出所需的数组
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
如果直接用PHP json_encode函数
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<ol class="dp-xml"><li class="alt"><span class="tag"><</span> ?PHP </li><li><span>echo json_encode($json); </span></li><li class="alt"><span class="tag">?></span><span> </span></li><li><span> </span></li></ol>
立即学习“PHP免费学习笔记(深入)”;
结果为:
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<ol class="dp-xml"><li class="alt"><span class="tag"><</span> ?PHP </li><li><span>[{"id":"13","name":null}<br />,{"id":"13","name":null}] </span></li><li class="alt"><span class="tag">?></span><span> </span></li><li><span> </span></li></ol>立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
可以看到汉字没有被转义 都为null,这是因为json仅仅转义encoding编码,故上面语句应该先转换编码
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<ol class="dp-xml"><li class="alt"><span class="tag"><</span> ?PHP </li><li><span>foreach ($ajax as $</span><span class="attribute">key</span><span>=</span><span class="tag">></span><span>$val) </span></li><li class="alt"><span>{ </span></li><li><span>$ajax[$key]['name'] = <br />urlencode($val['name']); </span></li><li class="alt"><span>} </span></li><li><span>echo json_encode($json); </span></li><li class="alt"><span class="tag">?></span><span> </span></li></ol>立即学习“PHP免费学习笔记(深入)”;
客户端js代码
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> </span><span class="tag-name">script</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"text/javascript"</span><span class="tag">></span><span> </span></span></li><li><span>function getsort(obj) </span></li><li class="alt"><span>{ </span></li><li><span>$.ajax( </span></li><li class="alt"><span>{ </span></li><li><span>type : "GET", </span></li><li class="alt"><span>url : "</span><span class="tag"><</span><span> ?=$this-</span><span class="tag">></span><span>baseUrl</span><span class="tag">?></span><span>/index/getajax", </span></li><li><span>data : "</span><span class="attribute">c</span><span>=" obj.value, </span></li><li class="alt"><span>success : function(json) </span></li><li><span>{ </span></li><li class="alt"><span>var </span><span class="attribute">json</span><span>=</span><span class="attribute-value">eval</span><span>(json); </span></li><li><span>var </span><span class="attribute">html</span><span> = </span><span class="attribute-value">'< select>'</span><span>; </span></li><li class="alt"><span>$.each(json, function(k) </span></li><li><span>{ </span></li><li class="alt"><span class="attribute">html</span><span> = </span><span class="attribute-value">'< option value="'</span><span> <br />json[k]['id'] '"</span><span class="tag">></span><span>' <br />decodeURI(json[k]['name']) '</span><span class="tag"><</span><span> /option</span><span class="tag">></span><span>'; </span></li><li><span>}); </span></li><li class="alt"><span class="attribute">html</span><span> =</span><span class="attribute-value">"< /select>"</span><span>; </span></li><li><span>$('#sort').html(html); </span></li><li class="alt"><span>} </span></li><li><span>} </span></li><li class="alt"><span>) </span></li><li><span>} </span></li><li class="alt"><span class="tag"><</span><span> /script</span><span class="tag">></span><span> </span></li></ol>立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
用上面的代码js会报错 说编码不符合标准
原因是因为js 中decodeURI 仅仅支持utf8 转码。所以 ,PHP json_encode函数的代码应该为下面的代码
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
<ol class="dp-xml"><li class="alt"><span class="tag"><</span> ?PHP </li><li><span>foreach ($ajax as $</span><span class="attribute">key</span><span>=</span><span class="tag">></span><span>$val) </span></li><li class="alt"><span>{ </span></li><li><span>$ajax[$key]['name'] = <br />urlencode(iconv('gb2312',<br />'utf-8',$val['name'])); </span></li><li class="alt"><span>} </span></li><li><span>echo json_encode($json); </span></li><li class="alt"><span class="tag">?></span><span> </span></li><li><span> </span></li></ol>立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
以上就是使用PHP json_encode函数在实际操作中出现问题的解决方法。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号