探讨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 和 HTML
Oct 09 PHP
PHP中在数据库中保存Checkbox数据(1)
Oct 09 PHP
聊天室php&mysql(二)
Oct 09 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
php防止sql注入简单分析
Mar 18 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
php微信公众号开发模式详解
Nov 28 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
thinkPHP框架RBAC实现原理分析
Feb 01 PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
python ip正则式
2009/05/07 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
Python制作刷网页流量工具
2017/04/23 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
利用python画出折线图
2018/07/26 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Python面向对象实现方法总结
2020/08/12 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
师德个人剖析材料
2014/02/02 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
公司建议书怎么写
2014/05/15 职场文书
商务英语专业求职信
2014/06/26 职场文书
研修心得体会
2014/09/04 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB