json_encode是怎样对待中文的
twocode

    虽说活到老学到老,但是学什么呢,遇到需要学的才能学,所以遇见就是缘分!

    在工作中对接接口时,数据类型多为json数据,所以用json_encode()时候很多,也对TA进行了重新认识。基于一点,都清楚编程的起源都是西方,所以一开始计算机就不认识中文,所以在编程中中文一直受到‘歧视’的语言!

    在刚接触json_encode()处理中文时,为了做到兼容最常用的方法就是先讲中文urlencode()转码,再转json,这是经验告诉自己的,但是不转码的话,直接json_encode()会出现什么情况呢?

你试过吗?

    我虽然试过但是也没深究,到了接口对接时细细的品味了一番,

    测试代码:



    原来直接处理的话,中文变成了这种样式:

        \u5317\u6f02\u8005

    其实就是转化成了Unicode编码了,正常情况下,直接再使用json_decode()解析的话也是没问题的;但是如果是传递给了Java的话TA就要处理一番,但是使用JSON常量的话JSON_UNESCAPED_UNICODE,就没有这么麻烦了,不管是php还是java都是直来直去,不有过多修改了。

    注意:JSON_UNESCAPED_UNICODE 支持php5.4以上版本

    JSON常量参考:http://php.net/manual/zh/json.constants.php 

1461144806331005.png