首頁 >後端開發 >php教程 >微信公众平台接口回复中文乱码

微信公众平台接口回复中文乱码

WBOY
WBOY原創
2016-06-06 20:50:451869瀏覽

<?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;
    	}
    }
}
    ?>

代码如上,可是回复中的中文会显示乱码,到底出什么问题了啊

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn