探讨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 相关文章推荐
3
Oct 09 PHP
PHP4之真OO
Oct 09 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
PHP中设置时区方法小结
Jun 03 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
PHP常用编译参数中文说明
Sep 27 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
PHP+Ajax+JS实现多图上传
May 07 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 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加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
canvas绘制多边形
2017/02/24 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python实现多层感知器
2019/01/18 Python
python SVM 线性分类模型的实现
2019/07/19 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
意大利奢侈品网站:Italist
2016/08/23 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
C++的几个面试题附答案
2016/08/03 面试题
数控机械专业个人的自我评价
2014/01/02 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server