首页 > php教程 > php手册 > 正文

php中json_encode中文编码问题

php中文网
发布: 2016-06-14 00:01:49
原创
991人浏览过

  现象:众所周知使用json_encode可以方便快捷地将对象进行json编码,但是如果对象的属性中存在着中文,问题也就随之而来了。json_encode会将中文转换为unicode编码,例如:'胥'经过json_encode处理后变为'\u80e5',最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。

  我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!

测试代码如下:

<span style="color: #008080;"> 1</span> <span style="color: #000000;"><?</span><span style="color: #000000;">php<br></span><span style="color: #008080;"> 2</span> <span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;"> myClass {<br></span><span style="color: #008080;"> 3</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #800080;">$item1</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;"> 4</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #800080;">$item2</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">'</span><span style="color: #000000;">中文</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br></span><span style="color: #008080;"> 5</span> <span style="color: #000000;">    <br></span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> to_json() {<br></span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">url编码,避免json_encode将中文转为unicode</span><span style="color: #008000;"><br></span><span style="color: #008080;"> 8</span> <span style="color: #008000;"></span><span style="color: #000000;">        </span><span style="color: #800080;">$this</span><span style="color: #000000;">-></span><span style="color: #000000;">item2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #008080;">urlencode</span><span style="color: #000000;">(</span><span style="color: #800080;">$this</span><span style="color: #000000;">-></span><span style="color: #000000;">item2);<br></span><span style="color: #008080;"> 9</span> <span style="color: #000000;">        </span><span style="color: #800080;">$str_json</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;"> json_encode(</span><span style="color: #800080;">$this</span><span style="color: #000000;">);<br></span><span style="color: #008080;">10</span> <span style="color: #000000;">        </span><span style="color: #008000;">//</span><span style="color: #008000;">url解码,转完json后将各属性返回,确保对象属性不变</span><span style="color: #008000;"><br></span><span style="color: #008080;">11</span> <span style="color: #008000;"></span><span style="color: #000000;">        </span><span style="color: #800080;">$this</span><span style="color: #000000;">-></span><span style="color: #000000;">item2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #008080;">urldecode</span><span style="color: #000000;">(</span><span style="color: #800080;">$this</span><span style="color: #000000;">-></span><span style="color: #000000;">item2);<br></span><span style="color: #008080;">12</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #008080;">urldecode</span><span style="color: #000000;">(</span><span style="color: #800080;">$str_json</span><span style="color: #000000;">);<br></span><span style="color: #008080;">13</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">14</span> <span style="color: #000000;">}<br></span><span style="color: #008080;">15</span> <span style="color: #000000;"><br></span><span style="color: #008080;">16</span> <span style="color: #000000;"></span><span style="color: #800080;">$c</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> myClass();<br></span><span style="color: #008080;">17</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> json_encode(</span><span style="color: #800080;">$c</span><span style="color: #000000;">);<br></span><span style="color: #008080;">18</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> </span><span style="color: #000000;">'</span><span style="color: #000000;"><br/></span><span style="color: #000000;">'</span><span style="color: #000000;">;<br></span><span style="color: #008080;">19</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> </span><span style="color: #800080;">$c</span><span style="color: #000000;">-></span><span style="color: #000000;">to_json();<br></span><span style="color: #008080;">20</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> </span><span style="color: #000000;">'</span><span style="color: #000000;"><br/></span><span style="color: #000000;">'</span><span style="color: #000000;">;<br></span><span style="color: #008080;">21</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> json_encode(</span><span style="color: #800080;">$c</span><span style="color: #000000;">);<br></span><span style="color: #008080;">22</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> </span><span style="color: #000000;">'</span><span style="color: #000000;"><br/></span><span style="color: #000000;">'</span><span style="color: #000000;">;<br></span><span style="color: #008080;">23</span> <span style="color: #000000;"></span><span style="color: #0000ff;">echo</span><span style="color: #000000;"> json_encode(</span><span style="color: #000000;">'</span><span style="color: #000000;">胥</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br></span><span style="color: #008080;">24</span> <span style="color: #000000;"></span><span style="color: #000000;">?></span>
登录后复制

程序输出结果:

SDCMS-B2C商城网站管理系统
SDCMS-B2C商城网站管理系统

SDCMS-B2C商城网站管理系统是一个以php+MySQL进行开发的B2C商城网站源码。 本次更新如下: 【新增的功能】 1、模板引擎增加包含文件父路径过滤; 2、增加模板编辑保存功能过滤; 3、增加对统计代码参数的过滤 4、新增会员价设置(每个商品可以设置不同级不同价格) 5、将微信公众号授权提示页单独存放到data/wxtemp.php中,方便修改 【优化或修改】 1、修改了check_b

SDCMS-B2C商城网站管理系统 13
查看详情 SDCMS-B2C商城网站管理系统
<span style="color: #000000;">{</span><span style="color: #000000;">"</span><span style="color: #000000;">item1</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">item2</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">"</span><span style="color: #000000;">\u4e2d\u6587</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br>{</span><span style="color: #000000;">"</span><span style="color: #000000;">item1</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">item2</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">"</span><span style="color: #000000;">中文</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br>{</span><span style="color: #000000;">"</span><span style="color: #000000;">item1</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">item2</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">"</span><span style="color: #000000;">\u4e2d\u6587</span><span style="color: #000000;">"</span><span style="color: #000000;">}<br></span><span style="color: #000000;">"</span><span style="color: #000000;">\u80e5</span><span style="color: #000000;">"</span>
登录后复制

希望本文起到抛砖引玉的作用,收集大家更好的解决方法……!

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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源: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号