《php5.4以下版本json不支持不转义内容中文的解决方法_.docx》由会员分享,可在线阅读,更多相关《php5.4以下版本json不支持不转义内容中文的解决方法_.docx(4页珍藏版)》请在三一文库上搜索。
1、php5.4以下版本json不支持不转义内容中文的解决方法_ 这篇文章主要介绍了php5.4以下版本json不支持不转义内容中文的解决方法,通过一个自定义php方法实现模拟joson中文不转义,具有肯定参考借鉴价值,需要的伴侣可以参考下 本文实例讲解并描述了php5.4以下版本json不支持不转义内容中文的解决方法。分享给大家供大家参考。具体分析如下: 写ERP接口的时候遇到JAVA方接收这种json_encode后的内容 代码如下: orderCode:1401160935542399,creator:u751fu6d3bu7528u54c1u6d4bu8bd5u5c0fu5c4b 其中cr
2、eator:u751fu6d3bu7528u54c1u6d4bu8bd5u5c0fu5c4b为中文,目前我们用的是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, JS
3、ON_UNESCAPED_UNICODE); else function json_encode_ex($var) if ($var = null) return null; if ($var = true) return true; if ($var = false) return false; static $reps = array( array(, /, n, t, r, b, f, , ), array(, /, n, t, r, b, f, , ), ); if (is_scalar($var) return . str_replace($reps0, $reps1, (strin
4、g) $var) . ; if (!is_array($var) throw new Exception(JSON encoder error!); $isMap = false; $i = 0; foreach (array_keys($var) as $k) if (!is_int($k) | $i+ != $k) $isMap = true; break; $s = array(); if ($isMap) foreach ($var as $k = $v) $s = . $k . : . call_user_func(_FUNCTION_, $v); return . implode(, $s) . ; else foreach ($var as $v) $s = call_user_func(_FUNCTION_, $v); return . implode(, $s) . ; 用的时候挺直当内置函数用就行。json_encode_ex(array(钓鱼岛=中国的);还支持多维数组。 盼望本文所述对大家的php程序设计有所关心。 更多信息请查看IT技术专栏 .