1
anewg 2014-09-22 19:52:28 +08:00
5.4 之后 echo json_encode("中文", JSON_UNESCAPED_UNICODE);
5.4 之前 echo json_encode(urlencode("中文"));接收端 json_decode 后再 urldecode |
4
GPU OP |
5
iyaozhen 2014-09-22 20:38:10 +08:00
其实没关系的,接收的时候php_decode会把编码还原。
js我用jquery接收,不用任何处理data.msg直接获取就行。 一楼说的php5.4之后的JSON_UNESCAPED_UNICODE参数可以直接输出中文。 |
6
zakokun 2014-09-22 21:44:08 +08:00 via iPad
先把中文urlencode一下,处理完以后再转回来urldecode
|
9
bombless 2014-09-23 07:27:35 +08:00
我还以为是指读不出来unicode编码呢…
这种编码算是一种惯例了,不明白为啥要改 |
10
tmkook 2014-09-23 09:08:50 +08:00
function jsonEncode($arr){
$json = json_encode($arr); return preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $json); } 放出我的必杀技!!! |
14
Actrace 2014-09-24 09:01:03 +08:00
一个比较容易懂的做法是先把数组内的元素都用urlencode处理成不需要转换的字符串,然后生成JSON字符串后再用urldecode来对整个JSON字符串进行解码(中文等将被还原),类似于金属提纯.
不过看了10楼的做法,感觉10楼效率上会有很大的优势,毕竟是正则替换,而且相对于上面提出的方案少了一个转换的流程. |