php - 微信公众平台接口回复中文乱码
PHP中文网
PHP中文网 2017-04-10 14:25:19
[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><![CDATA[%s]]></ToUserName>
    		<FromUserName><![CDATA[%s]]></FromUserName>
    		<CreateTime>%s</CreateTime>
    		<MsgType><![CDATA[%s]]></MsgType>
    		<Content><![CDATA[%s]]></Content>
    		<FuncFlag>0<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中文网
PHP中文网

认证0级讲师

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号