PHP json编码遇到的问题
2015-02-06 15:26
375 查看
今天遇到了json编码解码之后中文消失的问题,一探究竟,写下这篇文章
PHP中提供了json_encode 和json_decode 这对函数 将PHP中 值转化成 字符串,但是遇到中文的时候,很容易出现乱码。为什么呢?
查看PHP手册,发现json只支持utf-8编码,也就是说,中文在进行json_encode时,必须是utf-8编码,json_decode之后也是utf-8编码
测试程序如下:
输出结果如下
可以看到,中文在这个转化过程中丢失了。
解决这个问题目前我知道两种方法。
方法1:转码,json_encode之前确保编码是utf-8,而且别忘记 json_decode之后 转回原来的编码
如下所示:
运行如下:
方法二:
urlencode 和urldecode 来帮忙。其实原理也一样,urlencode会将 串的编码转成utf-8的。
运行结果
出了上面两种方法,查看手册可知,在php5.4以后,json_encode可以带一个参数JSON_UNESCAPED_UNICODE来避免这个问题
PHP中提供了json_encode 和json_decode 这对函数 将PHP中 值转化成 字符串,但是遇到中文的时候,很容易出现乱码。为什么呢?
查看PHP手册,发现json只支持utf-8编码,也就是说,中文在进行json_encode时,必须是utf-8编码,json_decode之后也是utf-8编码
测试程序如下:
<?php $arr = array ( 'Name'=>'德玛西亚', 'Age'=>20 ); $str = json_encode($arr); $str = json_decode($str,TRUE); var_dump($str); ?>
输出结果如下
array 'Name' => null 'Age' => int 20
可以看到,中文在这个转化过程中丢失了。
解决这个问题目前我知道两种方法。
方法1:转码,json_encode之前确保编码是utf-8,而且别忘记 json_decode之后 转回原来的编码
如下所示:
<?php $arr = array ( 'Name'=>iconv('GBK', 'utf-8','德玛西亚'), 'Age'=>20 ); $str = json_encode($arr); $str = json_decode($str,TRUE); $str['Name'] = iconv('UTF-8','GBK',$str['Name']);//别忘了转回来 var_dump($str); ?>
运行如下:
array 'Name' => string '德玛西亚' (length=8) 'Age' => int 20
方法二:
urlencode 和urldecode 来帮忙。其实原理也一样,urlencode会将 串的编码转成utf-8的。
<?php $arr = array ( 'Name'=>urlencode('德玛西亚'), 'Age'=>20 ); $str = json_encode($arr); $str = json_decode($str,TRUE); $str['Name'] = urldecode($str['Name']); var_dump($str); ?>
运行结果
array 'Name' => string '德玛西亚' (length=8) 'Age' => int 20
出了上面两种方法,查看手册可知,在php5.4以后,json_encode可以带一个参数JSON_UNESCAPED_UNICODE来避免这个问题
相关文章推荐
- PHP中遇到BOM、<feff>编码导致json_decode函数无法解析问题
- PHP中遇到BOM、<feff>编码导致json_decode函数无法解析问题
- 用php对json字符串编码问题
- php中json_encode中文编码问题
- PHP中json_encode()函数编码问题的解决
- php笔记(11)——json_encode后中文编码问题
- PHP编码遇到的问题
- 关于PHP在数组对象与JSON数据之间的转换问题(编码问题)
- php将数组转化为json数据遇到的问题解决
- php中解决中文json编码模糊查询问题
- php中json_encode中文编码问题
- php中json_encode中文编码问题分析
- PHP中json_encode中文编码的问题_学习
- php中json_encode中文编码问题(转)
- PHP返回JSON数据及中文编码问题的解决方案
- php中json_encode中文编码问题
- php中json_encode中文编码问题分析
- php中json_encode中文编码问题分析
- PHP网站开发遇到的中文编码问题