探讨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 相关文章推荐
Discuz! Passport 通行证整合
Mar 27 PHP
Gregarius中文日期格式问题解决办法
Apr 22 PHP
PHP伪静态写法附代码
Jun 20 PHP
简单的PHP留言本实例代码
May 09 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
php 生成短网址原理及代码
Jan 23 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
PHP Static延迟静态绑定用法分析
Mar 16 PHP
Smarty模板变量调节器用法分析
May 23 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实现utf-8转unicode函数分享
2015/01/06 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
如何基于Python批量下载音乐
2019/11/11 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
python实现手势识别的示例(入门)
2020/04/15 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
电气工程自动化求职信
2014/03/14 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
个人欠条范本
2015/07/03 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android