探讨PHP JSON中文乱码的解决方法详解


Posted in PHP onJune 06, 2013

我们知道在使用Ajax技术与PHP后台交互时,中文乱码是常有的事,JSON作为与XML类似的数据交换格式,在PHP用来进行交互时也会出现中 文乱码的情况,解决PHP JSON中文乱码的方法思路其实与PHP Ajax传值中文字符乱码的解决方法类似,下面我以教程形式详细介绍下解决PHP JSON中文乱码的方法。

为什么PHP与JSON交互时会出现中文乱码?

由于JSON与JS一样,对于客户端的字符是以UTF8的形式处理,即JSON提交或接受返回的字符是以UTF8形式处理,当与PHP交互时,如果数据库编码、PHP页面编码不采用UTF8格式时,PHP与JSON交互时中文就会产生乱码。

解决PHP JSON中文乱码的方法

在知道了PHP与JSON交互产生中文乱码的原因后解决的方法其实就简单很多。

解决PHP JSON中文乱码方法一:保证数据库、前后台PHP页面编码一致

最简答的解决PHP JSON中文乱码的方法就是保证数据库编码、PHP页面编码统一采用UTF8格式,对于PHP入门学习者来说建站时数据库最好使用UTF8格式,可减少不少麻烦。

解决PHP JSON中文乱码方法二:配置使用PHP函数urlencode与JS函数decodeURI()

当PHP使用JSON与前台JS交互时,在使用json_encode函数之前需要使用urlencode函数进行URL编码,在JS客户端通过JS函数decodeURI()进行URL解码后再读取中文信息。

注意:当在PHP页面中通过JSON进行交互,比如将数组转换成JSON格式时,首先请使用urlencode函数对数组key和value进行URL编码然后再使用json_encode函数和urldecode函数。

解决PHP JSON中文乱码方法三:使用字符串编码转换函数

当由于各种原因,数据库编码、PHP页面编码不一致时,比如现有的数据库编码使用GB2312,这时在使用JSON交互时,就需要使用字符串编码转换函数进行字符集之间的转换。常用的函数有iconv,由于iconv需要PHP配置环境支持,如果不支持,你可以通过自行编写gbk与UTF8编码转换函数实现编码转换。

至此,PHP JSON中文字符乱码的三种解决方法就介绍完了,其实在PHP开发中,遇到类似PHP与AJAX/JS进行交互,产生中文乱码时基本都是使用这些方法,思路是类似的。

PHP 相关文章推荐
十天学会php之第三天
Oct 09 PHP
PHP新手上路(五)
Oct 09 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
php 安全过滤函数代码
May 07 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 #PHP
强烈声明: 不要使用(include/require)_once
Jun 06 #PHP
探讨PHP调用时间格式的参数详解
Jun 06 #PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 #PHP
深入密码加salt原理的分析
Jun 06 #PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 #PHP
php定时计划任务的实现方法详解
Jun 06 #PHP
You might like
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP文件操作详解
2016/12/30 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
跟老齐学Python之重回函数
2014/10/10 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
django将数组传递给前台模板的方法
2019/08/06 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
pandas按条件筛选数据的实现
2021/02/20 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
Shell编程面试题
2016/05/29 面试题
英语文学专业学生的自我评价
2013/10/31 职场文书
中学生获奖感言
2014/02/04 职场文书
《雨点》教学反思
2014/02/12 职场文书
党员干部公开承诺书
2014/03/26 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
学习十八大宣传标语
2014/10/09 职场文书
业务内勤岗位职责
2015/04/13 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
观后感开头
2015/06/19 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL