使用PHP的json_encode处理中文时,中文会被编码,变得不可读,类似于“u***”格式。如果你想让汉字不被转码,这里有三种方法。
1.升级PHP,在PHP5.4,这个问题终于解决了,Json增加了一个选项:JSON_UNESCAPED_UNICODE,故名,也就是说Json不编码Unicode。
<?php
echojson_encode(“中文”,JSON_UNESCAPED_UNICODE);
//“中国人”
2、先对汉字进行urlencode,再使用json_encode。json_encode之后,再次使用urldecode进行解码,这样编码后的json数组中的汉字就不会有unicode编码了。
$数组=数组(
‘test’=>urlencode(“我是一个测试”)
);
$array=json_encode($array);
回声urldecode($array);
//{“test”:”我是一个测试”}
3.再次解码unicode码。解码函数如下:
函数decodeUnicode($str)
{
returnpreg_replace_callback(‘/\\u([0-9a-f]{4})/i’,
创建函数(
‘$匹配’,
‘returnmb_convert_encoding(pack(“H*”,$matches[1]),”UTF-8″,”UCS-2BE”);’
),
$str);
}
4.例子
$arr=array(‘name1′:”中文”,’name2′:’abc12’);
$jsonstr=decodeUnicode(json_encode($arr));
json_encode中文变编码
使用PHP的json_encode处理中文时,中文会被编码,变得不可读,类似于“u***”格式。如果你想让汉字不被转码,这里有三种方法。
.升级PHP,在PHP5.中,这个问题终于解决了,Json增加了一个选项:JSON_UNESCAPED_UNICODE,故名,即Json不编码Unicode。
<?php
echojson_encode(“中文”,JSON_UNESCAPED_UNICODE);
//“中国人”
.Urlen先对汉字进行编码,再使用json_encode。json_encode之后,再次使用urldecode进行解码,这样编码后的json数组中的汉字就不会有unicode编码了。
$数组=数组(
‘test’=>urlencode(“我是一个测试”)
);
$array=json_encode($array);
回声urldecode($array);
//{“test”:”我是一个测试”}
.解码unicode码,解码函数如下:
函数decodeUnicode($str)
{
returnpreg_replace_callback(‘/\\u([0-9a-f]{4})/i’,
创建函数(
‘$匹配’,
‘returnmb_convert_encoding(pack(“H*”,$matches[1]),”UTF-8″,”UCS-2BE”);’
),
$str);
}
http://www.cnblogs.com/sink_cup/archive/2011/05/28/php_json_encode_unicode_decode.html
http://www.veryhuo.com/a/view/35112.html
http://www.alixixi.com/program/a/2011112776664.shtml