探讨PHP JSON中文乱码的解决方法详解

 更新时间:2013年06月06日 17:42:05   作者:  
本篇文章是对PHP中JSON中文乱码的解决方法进行了详细的分析介绍,需要的朋友参考下

我们知道在使用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中引用符号(&)的使用详解

    php的引用就是在变量或者函数、对象等前面加上&符号,在PHP 中引用的意思是:不同的名字访问同一个变量内容,下面介绍如何使用PHP的引用
    2013-11-11
  • PHP有序表查找之二分查找(折半查找)算法示例

    PHP有序表查找之二分查找(折半查找)算法示例

    这篇文章主要介绍了PHP有序表查找之二分查找(折半查找)算法,简单介绍了二分查找法的概念、原理并结合实例形式分析了php基于二分查找算法进行有序线性表查找的相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • PHP实现操作redis的封装类完整实例

    PHP实现操作redis的封装类完整实例

    这篇文章主要介绍了PHP实现操作redis的封装类,以完整实例形式较为详细的分析了PHP操作redis的自定义类及其相关使用方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • PHP处理excel cvs表格的方法实例介绍

    PHP处理excel cvs表格的方法实例介绍

    PHP处理excel cvs表格想必有很多朋友对此还是很陌生的吧,下面以实例为大家介绍下,感兴趣的朋友可以参考下哈,希望对你有所帮助
    2013-05-05
  • php checkdate、getdate等日期时间函数操作详解

    php checkdate、getdate等日期时间函数操作详解

    PHP的日期时间函数date()中介绍了PHP日期时间函数的简单用法,这类将介绍更多的函数来丰富我们的应用。
    2010-03-03
  • PHP中header和session_start前不能有输出原因分析

    PHP中header和session_start前不能有输出原因分析

    在http传输文本中,规定必须 header和content顺序必须是:header在前content在后,并且header的格式必须满足“keyword: value\n”这种格式,大家知道这是为什么吗?接下来为您详细解答
    2013-01-01
  • 利用PHP实现词法分析器与自定义语言

    利用PHP实现词法分析器与自定义语言

    这篇文章主要为大家详细介绍了润滑利用PHP实现词法分析器与自定义语言,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-08-08
  • php7.3报preg_match() JIT compilation failed no more memory解决办法

    php7.3报preg_match() JIT compilation failed no more mem

    PHP JIT编译失败,内存不足的解决方法!你是否遇到过这个问题?不用担心,我们将为你提供简单易懂的解决方案,让你摆脱这一困扰,立即阅读我们的指南,轻松解决PHP JIT编译失败的烦恼!
    2023-12-12
  • 深入解析PHP垃圾回收机制对内存泄露的处理

    深入解析PHP垃圾回收机制对内存泄露的处理

    本篇文章是关于PHP垃圾回收机制对内存泄露的处理进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP多线程类及用法实例

    PHP多线程类及用法实例

    这篇文章主要介绍了PHP多线程类及用法,实例分析了多线程类的具体实现方法及应用技巧,并结合下载远程图片的实例予以深入分析,需要的朋友可以参考下
    2014-12-12

最新评论