探讨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的十大要点(上)
Feb 04 PHP
在JavaScript中调用php程序
Mar 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
php和redis实现秒杀活动的流程
Jul 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
SMARTY学习手记
2007/01/04 PHP
apache rewrite_module模块使用教程
2008/01/10 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
浅谈scrapy 的基本命令介绍
2017/06/13 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
HTML5实现桌面通知 提示功能
2017/10/11 HTML / CSS
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
流动人口婚育证明
2014/10/19 职场文书
买房协议书范本
2014/10/23 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
vscode内网访问服务器的方法
2022/06/28 Servers