解决json_encode中文UNICODE转码问题
2015-12-10 11:56
549 查看
下面是我查询了网上的解决办法后,自己总结的方法, 如有错误的地方,请你帮忙指正,在此感谢
注意:
preg_replace函数已经在php5.5.x版本中废除, 如果你是高版本,将会报错如下(如果你是低版本,此方法仍然可用)
此时我们可以使用preg_replace_callback()来代替, 例子如下所示:
取出数据的时候,再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。
上面可能用到一些函数:
[使用场景1] 我们将数据经过json_encode()处理后,存进表中
由于, 用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如下所示:
当我们从数据库表中"取出"数据时,如何将Unicode字符转化成中文,有3种解决办法,此时我将一一列出
方法1:
升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode方法2:
方法3:
注意:
preg_replace函数已经在php5.5.x版本中废除, 如果你是高版本,将会报错如下(如果你是低版本,此方法仍然可用)
此时我们可以使用preg_replace_callback()来代替, 例子如下所示:
return
iconv(
'UCS-2BE'
,
'UTF-8'
, pack(
'H4'
,
$match
[1]));
//抓取来的ucs-2编码的信息转码成utf-8格式的
说明: 以上3中方法,我觉的方法1是最简单不过的,因为存进表中的是中文形式, 那么我们取出的数据就不用经过任何的处理了, 另外两种方法都是对于那些已经存进表中的Unicode字符进行的处理
[使用场景2] 我们存进表中的汉字先urlencode然后再使用json_encode,将存进表中的数据如下所示
取出数据的时候,再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。
说明: 这种方法不是简单的方法, 在此仅仅是说明有此种方法而已,并不推荐使用
上面可能用到一些函数:
说明一下其他用到的函数: pack() 函数把数据装入一个二进制字符串。 语法 : pack(format,args+) format 必需。规定在包装数据时所使用的格式。 args+ 可选。规定被包装的一个或多个参数。 iconv()函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。 例如: $string = "大霞"; iconv("utf8","gbk",$string)//将字符串string 编码由utf8转变成gbk;
相关文章推荐
- Linux 与 Windows 对UNICODE 的处理方式
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- Unicode详细分析解释
- vbs中将GB2312转Unicode的代码
- vbs 解析json jsonp的方法
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- 程序员趣味读物 谈谈Unicode编码
- C#实现对Json字符串处理实例
- 常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8)
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP中JSON的应用技巧