探讨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 相关文章推荐
用libtemplate实现静态网页生成
Oct 09 PHP
PHP SEO优化之URL优化方法
Apr 21 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
php文件上传简单实现方法
Jan 24 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
PHP文件操作详解
Dec 30 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
PHP实现简易图形计算器
Aug 28 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
一个简单计数器的源代码
2006/10/09 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
WebPack基础知识详解
2017/01/16 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
JS实现简易计算器
2020/02/14 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python双向链表原理与实现方法详解
2019/12/03 Python
PyQt5实现登录页面
2020/05/30 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
试述DBMS的主要功能
2016/11/13 面试题
大学生应聘推荐信范文
2013/11/19 职场文书
三八活动策划方案
2014/08/17 职场文书
加入学生会自荐书
2015/03/05 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
请假条应该怎么写?
2019/06/24 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书