探讨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生成Flash动画的实现代码
Mar 12 PHP
php自定义函数之递归删除文件及目录
Aug 08 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
php实现QQ小程序发送模板消息功能
Sep 18 PHP
Laravel 添加多语言提示信息的方法
Sep 29 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获取当前url的具体方法全面解析
2013/11/26 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
C#中的验证控件有几种
2014/03/08 面试题
大专会计自我鉴定
2014/02/06 职场文书
安全横幅标语
2014/06/09 职场文书
学前教育专业求职信
2014/09/02 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
出国导师推荐信
2015/03/25 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server
Go语言编译原理之源码调试
2022/08/05 Golang