探讨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进行交互,产生中文乱码时基本都是使用这些方法,思路是类似的。