ホームページ >バックエンド開発 >PHPチュートリアル >文字化けしたPHPポストリクエストの問題
PHP が文字化けする
以下のように最も原始的なテンプレートでポストリクエストのソースコードを使用しますstatic public function DoPost($url,$post_data=array()){ $url2 = parse_url($url); $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]); $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]); $host_ip = @gethostbyname($url2["host"]); $fsock_timeout = 2; //2 second if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){ return false; } $request = $url2["path"].($url2["query"] ? "?" . $url2["query"] : ""); $post_data2 = http_build_query($post_data); $post_data2=urldecode($post_data2); $in = "POST " . $request . " HTTP/1.0\r\n"; $in .= "Accept: */*\r\n"; $in .= "Host: " . $url2["host"] . "\r\n"; $in .= "User-Agent: Lowell-Agent\r\n"; $in .= "Content-type: application/x-www-form-urlencoded\r\n"; $in .= "Content-Length: " . strlen($post_data2) . "\r\n"; $in .= "Connection: Close\r\n\r\n"; $in .= $post_data2 . "\r\n\r\n"; unset($post_data2); if(!@fwrite($fsock, $in, strlen($in))){ fclose($fsock); return false; } return self::GetHttpContent($fsock); } static private function GetHttpContent($fsock=null) { $out = null; while($buff = @fgets($fsock, 2048)){ $out .= $buff; } fclose($fsock); $pos = strpos($out, "\r\n\r\n"); $head = substr($out, 0, $pos); //http head $status = substr($head, 0, strpos($head, "\r\n")); //http status line $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){ if(intval($matches[1]) / 100 == 2){ return $body; }else{ return false; } }else{ return false; } }
文字化けは、両側でエンコーディングが一致していないことが原因である可能性があります。たとえば、オペレーターの GBK エンコーディングが使用されており、ページが UTF8 エンコーディングを使用している場合に、ページをオペレーターのエンコーディングと一致させてみてください。
文字化けは、両側のエンコーディングが一致していないことが原因である可能性があります。たとえば、オペレーターのエンコーディングが GBK で、ページが UTF8 エンコーディングを使用している場合、ページをオペレーターのエンコーディングと一致させてみてください。
試してみましたが、やはり文字化けしてしまいます。
こちらに来てください
まず受信者にエンコード要件について尋ねてから、必要に応じてエンコードしてください
エンコードは GB2312 であると言われました。 gb2312 への送信結果は依然として文字化けしています。
エンコードは GB2312 であると言われましたが、送信結果は依然として文字化けします。
あなたが送ったキャラクターのアイコンvを作成してください
私はただあなたのアバターを見ているだけです、私の心は空っぽです
重要なのは、あなたが送ったデータが単に文字セットを変更するだけではなく、gbkであるということです
私はただ見ているだけですあなたのアバターを見て、私の心は空っぽです
重要なのは、送信したデータが gbk であるということであり、単に文字セットを変更するだけではありません
ははは、集中する必要があります
上記のコードをどのように gbk に処理すべきか
それは何も関係ありません上記のコードではパラメータを渡す前に変換する必要があります
上記のコードとは関係ありません、パラメータを渡す前に変換する必要があります
アドバイスありがとうございます。出来た。
素晴らしいツイスト