探讨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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
php数组中删除元素的实现代码
Jun 22 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
百度地图API使用方法详解
Aug 25 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
php排序算法实例分析
Oct 17 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 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
yii2实现根据时间搜索的方法
2016/05/25 PHP
php设计模式之单例模式代码
2016/06/11 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
Order by的几种用法
2013/06/16 面试题
环境科学毕业生自荐信
2013/11/21 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
小学教师国培感言
2014/02/08 职场文书
情人节活动策划方案
2014/02/27 职场文书
《开国大典》教学反思
2014/04/19 职场文书
后备干部培训方案
2014/05/22 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python