json_encode方法防止汉字变成Unicode
大家都知道,json_encode通常把汉字在JSON为Unicode,但它不一定是我们想要的。有时候,我们需要把汉字形式的JSON字符串,例如,我们需要得到GBK编码的JSON字符串(只要字符形式的字符串转码得到)。有什么好办法吗PHP的官员听到这一需求,提供了可靠的解决方案:json_unescaped_unicode.this参数确保json_encode将不再把汉字Unicode。
这个问题似乎已经解决了。当我们愉快地使用这个参数时,我们发现没有鸡蛋。小心,这个参数在PHP支持之后只有5.4。那么早期的PHP呢
社区提供解决方案:
功能my_json_encode($ ARR){
/ / convmap自X字符码,它需要所有多字节码(上)。
array_walk_recursive($ ARR,功能($项,美元关键){ if(is_string($项))项目= mb_encode_numericentity美元(美元美元的项目,项目(});})。
返回mb_decode_numericentity(json_encode($ ARR),数组(x,xffff,xffff),'utf);
}
但是,只有5.3的方法得到支持,因为5.2不支持匿名函数,至于解决方案呢定义匿名函数。
PS:解决中国json_encode Unicode转码
当使用PHP的json_encode处理汉语,汉语将被编码为不可读的格式类似你***。如果你不想使用汉字,这里有三种方法。
1。在php5.4 PHP,升级,问题终于解决,JSON有了新的选择:json_unescaped_unicode,奇怪的名字,也就是说,不要使用JSON编码的Unicode。
< PHP
回声json_encode(中国
中文
2、中国第一的角色是URLEncode,然后json_encode和json_encode用于解码URLDecode再次,使汉字在JSON数组编码不会出现Unicode编码。
数组=(数组)
测试= > urlencode(我的测试)
);
$array = json_encode(数组);
Echo URLDecode(数组);
:我正在测试}
三.解码Unicode代码,解码功能如下:
功能decodeunicode($str)
{
返回preg_replace_callback( / U({ 0-9a-f } { 4 }) /我,
create_function(
火柴,
返回mb_convert_encoding(包(H *
),
美元);
}