探讨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学习之数组值的操作
Apr 17 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php遍历文件夹下的所有文件和子文件夹示例
Mar 20 PHP
PHP中的事务使用实例
May 26 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
PHP执行系统命令函数实例讲解
Mar 03 PHP
php中Swoole的热更新实现代码实例
Mar 04 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读取文件内容的几种方法详解
2013/06/26 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python Property属性的2种用法
2015/06/21 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
单位考核鉴定意见
2015/06/05 职场文书
在校学生证明格式
2015/06/24 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
使用Python获取字典键对应值的方法
2022/04/26 Python