探讨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 09 PHP
PHP Google的translate API代码
Dec 10 PHP
PHP中读写文件实现代码
Oct 20 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
PHP常用处理静态操作类
Apr 03 PHP
php发送html格式文本邮件的方法
Jun 10 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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的面向对象编程
2006/10/09 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
javascript的函数
2007/01/31 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
vue.js路由跳转详解
2017/08/28 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
Django使用Profile扩展User模块方式
2020/05/14 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
python绘制高斯曲线
2021/02/19 Python
酒店应聘自荐信
2013/11/09 职场文书
《小池塘》教学反思
2014/02/28 职场文书
教师节宣传方案
2014/05/23 职场文书
车辆年检委托书范本
2014/10/14 职场文书
2015年党性分析材料
2014/12/19 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
施工现场安全管理制度
2015/08/05 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
小学英语教学反思范文
2016/02/15 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技