php5.4以下版本json不支持不转义内容中文的解决方法 |
本文实例讲述了php5.4以下版本json不支持不转义内容中文的解决方法 。分享给大家供大家参考 。具体分析如下: 写ERP接口的时候遇到JAVA方接收这种json_encode后的内容 复制代码 代码如下: {"orderCode":"1401160935542399","creator":"\u751f\u6d3b\u7528\u54c1\u6d4b\u8bd5\u5c0f\u5c4b"} 其中"creator":"\u751f\u6d3b\u7528\u54c1\u6d4b\u8bd5\u5c0f\u5c4b"为中文,目前我们用的是UTF8的 。但是JAVA方接收这种的时候自动把转义后的中文转回成中文的,那签名计算方式是按这个来的,签名自然对不上了 。 查了PHP手册,5.4以下的不能不转义中文,但是我们服务器上的PHP版本是5.3的,于是用PHP模拟了一个JSON方法 。 复制代码 代码如下: //模拟joson中文不转义
if (version_compare(PHP_VERSION, 5.4.0) >= 0) { function json_encode_ex($var) { return json_encode($var, JSON_UNESCAPED_UNICODE); } } else { function json_encode_ex($var) { if ($var === null) return null; if ($var === true) if ($var === false) static $reps = array( if (is_scalar($var)) if (!is_array($var)) $isMap = false; $s = array(); if ($isMap) { return { . implode(,, $s) . }; return [ . implode(,, $s) . ]; 用的时候直接当内置函数用就行 。json_encode_ex(array(钓鱼岛=>中国的));还支持多维数组 。 希望本文所述对大家的php程序设计有所帮助 。 |