探讨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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
PHP form 表单传参明细研究
Jul 17 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
sql注入与转义的php函数代码
Jun 17 PHP
解析yii数据库的增删查改
Jun 20 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 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在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
Using the TextRange Object
2006/10/14 Javascript
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
python字典多条件排序方法实例
2014/06/30 Python
复习Python中的字符串知识点
2015/04/14 Python
django基础学习之send_mail功能
2019/08/07 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Python更换pip源方法过程解析
2020/05/19 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
九年级历史教学反思
2014/01/27 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python