PHP を使用して WeChat Enterprise Account インターフェースを呼び出して通知情報を送信することを勉強していたときに、問題が発生しました。中国語の文字エンコーディング。 POST を使用して送信されたデータが配列型の場合は、まず json_encode を使用して配列型データを josn 文字列に変換する必要があります。ただし、データに中国語の文字が含まれている場合、json_encode は GB2312 でエンコードされた中国語の文字をシリアル化できません。 UTF-8 でエンコードされた中国語文字も、json_encode を使用して変換されると認識できない文字化けとなり、WeChat エンタープライズ アカウント インターフェイスはこの文字化けを受信できませんでした。何をするか?調査とデバッグを繰り返した結果、最終的に 2 つの方法が見つかりました。
最初の方法 (配列データ):
1. ページ コードを UTF-8 エンコーディングに転送します。 2. urlencode を使用して中国語の文字をエンコードします。
?
3. json_encode を使用して配列データを josn 文字列に変換します。
4. urldecode を使用して josn 文字列データをデコードします。
5. 次に、デコードされた josn 文字列データを WeChat エンタープライズ アカウント インターフェイスに送信します。
?
2 番目の方法 (文字列データ):
1. ページ コードを UTF-8 エンコーディングに転送します。
2 .文字列連結を使用して送信されるデータ;
3. 次に、連結された文字列データを WeChat エンタープライズ アカウント インターフェイスに送信します。
?
コードを簡略化するために、2 番目の方法を使用しました。コードは次のとおりです。
?
?<?phpfunction curlPost($url,$data=""){ $ch = curl_init(); $opt = array( CURLOPT_URL => $url, CURLOPT_HEADER => 0, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $data, CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 20 ); $ssl = substr($url,0,8) == "https://" ? TRUE : FALSE; if ($ssl){ $opt[CURLOPT_SSL_VERIFYHOST] = 1; $opt[CURLOPT_SSL_VERIFYPEER] = FALSE; } curl_setopt_array($ch,$opt); $data = curl_exec($ch); curl_close($ch); return $data;}$corpid="请修改为你企业号的corpid";$corpsecret="请修改为你企业号的corpsecret";$Url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$corpsecret";$res = curlPost($Url);$ACCESS_TOKEN=json_decode($res)->access_token;$Url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$ACCESS_TOKEN";$msg='要发送的文字信息';$data="{\"touser\":\"要发给的用户ID\",\"msgtype\":\"text\",\"agentid\":你的应用ID,\"text\":{\"content\":\"$msg\"},\"safe\":0}";$res = curlPost($Url,$data);$errmsg=json_decode($res)->errmsg;if($errmsg==="ok"){ echo "发送成功!";}else{ echo "发送失败,".$errmsg;}?>
?
その他の紹介: http://www.cnblogs.com/jisheng/archive/2012/02/13/2350040.html
?
?