发布于 5年前

微信开发时,返回的消息中文乱码问题

在微信公众号关键词回复开发过程中,因项目需求使用 GBK编码,导致返回的中文字符在微信中显示乱码,求解决办法。部分代码如下:

 $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($msgType == 'text'){
    if(!empty( $keyword ))
    {
        $msgType = "text";
        $contentStr = "我是中文,你发送了 ".$keyword;
        $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
        echo $resultStr;
    }
}

解决办法:

只需要对返回的内容进行字符编码转换即可,对 $contentStr 进行处理 $contentStr = iconv('GBK','UTF8',$contentStr);

if($msgType == 'text'){
    if(!empty( $keyword ))
    {
        $msgType = "text";
        $contentStr = "我是中文,你发送了 ".$keyword;
        $contentStr = iconv('GBK','UTF8',$contentStr);
        $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
        echo $resultStr;
    }
}
©2020 edoou.com   京ICP备16001874号-3