Rumah >pembangunan bahagian belakang >tutorial php >微信公众平台接口回复中文乱码
<?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); //$wechatObj->valid(); $wechatObj->responseMsg(); function youdaofanyi($keyword) { $url = 'http://fanyi.youdao.com/openapi.do?keyfrom=coolrand&key=545706258&type=data&doctype=json&version=1.1&q='.$keyword; $f = new SaeFetchurl(); $output = $f->fetch($url); $message = json_decode($output,true); $errorcode = $message['errorCode']; $phonetic = $message['basic']['$phonetic']; $explains1 = $message['basic']['explains']['0']; $explains2 = $message['basic']['explains']['1']; $explains3 = $message['basic']['explains']['2']; $trans = $message['translation'][0]; return "哈哈"."\n".$trans."\n".$phonetic."\n".$explains1; } class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> <content></content> <funcflag>0<funcflag> </funcflag></funcflag></xml>"; if(!empty( $keyword )) { if((eregi("a",$keyword))){ $msgType = "text"; $contentStr = youdaofanyi($keyword); $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } else{ $msgType = "text"; $contentStr = "欢迎"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } }else{ echo "asd"; } }else { echo MESS; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token =TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
代码如上,可是回复中的中文会显示乱码,到底出什么问题了啊
这个问题已被关闭,原因:
<?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); //$wechatObj->valid(); $wechatObj->responseMsg(); function youdaofanyi($keyword) { $url = 'http://fanyi.youdao.com/openapi.do?keyfrom=coolrand&key=545706258&type=data&doctype=json&version=1.1&q='.$keyword; $f = new SaeFetchurl(); $output = $f->fetch($url); $message = json_decode($output,true); $errorcode = $message['errorCode']; $phonetic = $message['basic']['$phonetic']; $explains1 = $message['basic']['explains']['0']; $explains2 = $message['basic']['explains']['1']; $explains3 = $message['basic']['explains']['2']; $trans = $message['translation'][0]; return "哈哈"."\n".$trans."\n".$phonetic."\n".$explains1; } class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml> <tousername></tousername> <fromusername></fromusername> <createtime>%s</createtime> <msgtype></msgtype> <content></content> <funcflag>0<funcflag> </funcflag></funcflag></xml>"; if(!empty( $keyword )) { if((eregi("a",$keyword))){ $msgType = "text"; $contentStr = youdaofanyi($keyword); $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } else{ $msgType = "text"; $contentStr = "欢迎"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } }else{ echo "asd"; } }else { echo MESS; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token =TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
代码如上,可是回复中的中文会显示乱码,到底出什么问题了啊