Heim >Backend-Entwicklung >PHP-Tutorial >微信公众平台接口回复中文乱码

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

WBOY
WBOYOriginal
2016-06-06 20:50:451889Durchsuche

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn