30

別の Web ページを呼び出してページのすべての html を書き込む php スクリプトがありますが、すべて問題なく動作しますが、文字セットの問題があります。私のphpファイルのエンコーディングはutf-8で、他のすべてのphpファイルは問題なく動作します(つまり、サーバーに問題はありません)。そのコードに欠けているものは何ですか。すべてのスペイン語の文字は奇妙に見えます。PS。これらの奇妙な文字の元のバージョンを php に記述したとき、それらはすべて正確に見えます。

header("Content-Type: text/html; charset=utf-8");
function file_get_contents_curl($url)
{
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    $data=curl_exec($ch);
    curl_close($ch);
    return $data;
}
$html=file_get_contents_curl($_GET["u"]);
$doc=new DOMDocument();
@$doc->loadHTML($html);
4

6 に答える 6

38

シンプル:curlを使用すると、文字列がエンコードされ、utf-8デコードするだけで済みます..

Description

string utf8_decode ( string $data )

この関数は、UTF-8エンコードされていると想定される data を にデコードしますISO-8859-1

于 2012-11-22T15:44:25.793 に答える
16

このヘッダーを使用できます

   header('Content-type: text/html; charset=UTF-8');

文字列をデコードした後

 $page = utf8_decode(curl_exec($ch));

それは私のために働いた

于 2014-09-04T06:48:45.247 に答える
3

cURL とmb_detect_encoding(curl_exec($ch));返された UTF-8 を介して windows-1252 でエンコードされたファイルを取得していました。試してみるutf8_encode(curl_exec($ch));と、文字は正しかった。

于 2016-05-20T16:26:07.073 に答える