开发者网址导航

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

Soupe  2017-12-21 11:56  ·  355 浏览

在微信公众号关键词回复开发过程中,因项目需求使用 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;
    }
}
1个回答
cicl 2017-12-21 15:24

只需要对返回的内容进行字符编码转换即可,对 $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;
    }
}
恭喜你,这是一条成功消息
!
警告哦,这是一条警告消息