json_encode结果奇特,源码是:var_dump($data[2]); echo json_encode($data[2]); 结果是string(6) "家教"[136]=>string(6) "驾校"[137]=>string(12) "房屋中介"[138]=>string(6) "装修"[139]=>string(6) "装饰"3c\u79d1\u533b\u9662","\u6574\u5

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 02:35:35
json_encode结果奇特,源码是:var_dump($data[2]);echojson_encode($data[2]);结果是string(6)"家教"[136]=>string(6)"驾校

json_encode结果奇特,源码是:var_dump($data[2]); echo json_encode($data[2]); 结果是string(6) "家教"[136]=>string(6) "驾校"[137]=>string(12) "房屋中介"[138]=>string(6) "装修"[139]=>string(6) "装饰"3c\u79d1\u533b\u9662","\u6574\u5
json_encode结果奇特,
源码是:var_dump($data[2]); echo json_encode($data[2]); 结果是
string(6) "家教"
[136]=>
string(6) "驾校"
[137]=>
string(12) "房屋中介"
[138]=>
string(6) "装修"
[139]=>
string(6) "装饰"
3c\u79d1\u533b\u9662","\u6574\u578b\u533b\u9662","\u5987\u4ea7\u533b\u9662","\u513f\u7ae5\u533b\u9662","\u836f\u5e97","\u5c0f\u65f6\u5de5","\u4fdd\u59c6","
为什么json_encode部分会这样,不是我意料的结果

json_encode结果奇特,源码是:var_dump($data[2]); echo json_encode($data[2]); 结果是string(6) "家教"[136]=>string(6) "驾校"[137]=>string(12) "房屋中介"[138]=>string(6) "装修"[139]=>string(6) "装饰"3c\u79d1\u533b\u9662","\u6574\u5
没什么好意外的,这是unicode,\u59c6表示一个汉字
unicode编码表
1 unicode编码表
Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符,
比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来
表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制
就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制,
2的16次方等于65536,所以UCS-2最多能编码65536个字符.
编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode
编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97,
对于汉字的编码,事实上Unicode对汉字支持不怎么好,这也是没办法的,
简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万
多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字
也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用
4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来
编码,看一下Unicode对汉字的编码: