实际应用中,当有中文
字符时,当直接使用json_encode() 函数会使
汉字编码
(
PHP5 >= 5.2.0, PECL json >= 1.2.0)
该函数只能接受UTF-8 编码的数据(译注:指字符/
字符串类型的数据)
由以下常量组成的二进制掩码:JSON_HEX_QUOT,JSON_HEX_TAG,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT,JSON_UNESCAPED_UNICODE.
= array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echojson_encode();
?>
以上例程会输出:
解决方法
在
json_encode() 函数 使用参数:JSON_UNESCAPED_UNICODE
json_encode(, JSON_UNESCAPED_UNICODE);
字符转码方式
也可以尝试使用这个简短的方法:
function jsonEncodeWithCN() {
}
如果是php5.4以前的版本使用以下方法
间接解决
* 处理
json_encode() 不支持中文的情况
*
* 实际应用中,当有中文
字符时,当直接使用json_encode() 函数会使汉字不能正常显示
* 所以有了这个适用性比较广的函数 ch_json_encode()来解决这个问题
*
* charset: UTF-8
* create date: 2012-7-8
* @author Zhao Binyan
* @copyright (C) 2011-2012 itbdw
*//**
* 处理 json_encode() 不支持中文的情况
*
* @param array|object
* @return array|object
*/
function ch_json_encode() {
/**
* 将中文编码
* @param array
* @returnstring
*/
function ch_
urlencode() {
if (
is_array() || is_object()) {
foreach ( => ) {
if (is_scalar()) {
if (is_array()) {
= urlencode();
} elseif (is_object()) {
-> =urlencode();
}
= ch_urlencode();//
递归调用该函数
} elseif (is_object()) {
-> = ch_urlencode();
}
}
}
return;
}
= ch_urlencode();
return urldecode();
}
注意,字符编码必须是 utf-8 。
使用json_encode
Json 做为一种轻量级的数据交换格式,开始受到青睐,有与 XML 抢地盘的风头。而让人高兴的是,php也把 json 序列化数据的功能内置成函数了,这让想使用json的 PHPCoder 备感方便。
美中不足的是,json_encode / json_decode 系列函数只有在 php5.2 以上才有。这让立志开发兼容性强的PHP系统的coder很头痛。
幸好,已经有人把 json 的方法封装成 php4.x 系列甚至更低的版本都可以执行的类了。这里要先谢谢先驱了。让我们可以踩在巨人的肩膀上走向成功。
使用方法:
{
return json_encode();
}
else
{
}
?>