探讨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实现ping
Oct 09 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 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 5.4 你必须要知道的
2013/08/07 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
python利用faker库批量生成测试数据
2020/10/15 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
幼儿教师师德承诺书
2014/05/23 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
入股合作协议书
2014/10/12 职场文书
中班上学期个人总结
2015/02/12 职场文书
python实现网络五子棋
2021/04/11 Python
Python爬虫之爬取某文库文档数据
2021/04/21 Python
Python机器学习之PCA降维算法详解
2021/05/19 Python
nginx请求限制配置方法
2021/07/09 Servers