background image

PHP JSON 中文乱码的解决方法总结

本文是主要为大家归纳总结了 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 进行交互,产生中文乱码时基本都是使用这些方法,思路是类似的。