Curl は文字化けを収集し、PHP の収集に失敗します
PHP プログラムは gbk2312 でエンコードされています:
$url = "http://www.sina.com.cn"; / /gbk2312 エンコード
//$url = "http://www.163.com";//gbk2312 エンコード
//$url = "http://www.sohu.com";// gbk2312 Encoding
$ch =curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//取得した出力のテキストストリームを返す
$ret =curl_exec ($ ch);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_close($ch);
echo $ret;
?>
収集sina .com.cn を収集すると正常ですが、163.com を収集すると空になり、sohu.com を収集するとコードが失われます
何が起こっていますか?どうやって解決すればいいでしょうか?誰かが間違っているのですか?前もって感謝します! ! !残りポイントが少なくなりました、申し訳ありません。
-----解決策---------
少なくとも、私はポイントを獲得するためにここにいます。忘れずに満点を与えてください。
$curl=curl_init('http://www.163.com'); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)'); $html=curl_exec($curl); var_dump($html); $curl=curl_init('http://www.sohu.com'); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)'); $html=curl_exec($curl); //$html=strstr($html,'<'); $html=gzdecode($html); var_dump($html); 関数 gzdecode($data) { $len = strlen($data); if ($len 0) { スイッチ ($method) { ケース8: // 現在サポートされている唯一の圧縮方法: $data = gzinflate($body); 壊す; デフォルト: // 不明な圧縮方法 false を返します。 } } それ以外 { // ゼロバイトの本文コンテンツが許可されるかどうかはわかりません。 // 今は許可します...何もしません... } // 解凍後のサイズと CRC32 を確認します。 // 注: 方法によっては、データ サイズが大きい場合に失敗する可能性があります。 // $isize 以来、PHP の整数制限は strlen() に影響します // サイズが大きい場合は負の値になる場合があります。 if ($isize != strlen($data) || crc32($data) != $datacrc) { // 形式が間違っています! 長さまたは CRC が一致しません。 false を返します。 } $data を返します。 <div class="clear"></div>