探讨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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
Discuz 模板语句分析及知识技巧
Aug 21 PHP
php实现网站插件机制的方法
Nov 10 PHP
PHP的变量总结 新手推荐
Apr 18 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
php插入mysql数据返回id的方法
May 31 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 PHP
用php实现分页效果的示例代码
Dec 10 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连接SQLServer2005方法及代码
2013/12/26 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
php利用smtp类实现电子邮件发送
2015/10/30 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
进一步探究Python的装饰器的运用
2015/05/05 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
python实现定时提取实时日志程序
2018/06/22 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
为什么使用接口?
2014/08/13 面试题
求职信的要素有哪些呢
2013/12/26 职场文书
写给老师的表扬信
2014/01/21 职场文书
总经理助理工作职责
2014/02/06 职场文书
实习单位证明范例
2014/11/17 职场文书
学籍证明模板
2014/11/21 职场文书
慈善募捐倡议书
2015/04/27 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Win2008系统搭建DHCP服务器
2022/06/25 Servers