php5.4以下版本json不支持不转义内容中文的解决方法
《php5.4以下版本json不支持不转义内容中文的解决方法》要点: PHP实战本篇章节讲解php5.4以下版本json不支持不转义内容中文的解决办法.分享给大家供大家参考.具体分析如下: PHP实战写ERP接口的时候遇到JAVA方接收这种json_encode后的内容
代码如下:
{"orderCode":"1401160935542399","creator":"u751fu6d3bu7528u54c1u6d4bu8bd5u5c0fu5c4b"}
其中"creator":"u751fu6d3bu7528u54c1u6d4bu8bd5u5c0fu5c4b"为中文,目前我们用的是UTF8的.但是JAVA方接收这种的时候自动把转义后的中文转回成中文的,那签名计算方式是按这个来的,签名自然对不上了. PHP实战查了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'; PHP实战??????? if ($var === true) PHP实战??????? if ($var === false) PHP实战??????? static $reps = array( PHP实战??????? if (is_scalar($var)) PHP实战??????? if (!is_array($var)) PHP实战??????? $isMap = false; PHP实战??????? $s = array(); PHP实战??????? if ($isMap) { PHP实战??????????? return '{' . implode(',',$s) . '}'; PHP实战??????????? return '[' . implode(',$s) . ']'; PHP实战用的时候直接当内置函数用就行.json_encode_ex(array('钓鱼岛'=>'中国的'));还支持多维数组. PHP实战希望本文所述对大家的php程序设计有所赞助. 欢迎参与《php5.4以下版本json不支持不转义内容中文的解决方法》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |