如何正确运用PHP json_encode函数进行中文转换_PHP教程

php中文网
发布: 2016-07-15 13:32:53
原创
914人浏览过

百宝箱
百宝箱

百宝箱是支付宝推出的一站式AI原生应用开发平台,无需任何代码基础,只需三步即可完成AI应用的创建与发布。

百宝箱 911
查看详情 百宝箱

我们今天将要为大家带来的内容是php json_encode函数在处理中文转换时出现问题的解决方法。json 是一个很好的数据结构现在已经广泛用在网络数据传输上,

json_encode 和 json_decode

这两个函数的具体用法 网上有很多相关的文章 ,本文主要介绍 用json_encode 时 中文无法转换的解决方案,本文假设文件所用的编码为gb2312;

先写出所需的数组

立即学习PHP免费学习笔记(深入)”;

立即学习PHP免费学习笔记(深入)”;

  1.  ?PHP   
  2. $json = array (   
  3. 0 =>   
  4. array (   
  5. 'id' => '13',   
  6. 'name' => '乒乓球',   
  7. ),   
  8. 1 =>   
  9. array (   
  10. 'id' => '17',   
  11. 'name' => '篮球',   
  12. )   
  13. )   
  14. ?> 

立即学习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函数在实际操作中出现问题的解决方法。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446101.htmlTechArticle我们今天将要为大家带来的内容是PHP json_encode函数在处理中文转换时出现问题的解决方法。json 是一个很好的数据结构现在已经广泛用在网...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号