2

PHP、CURL、およびUT-8ギリシャ文字に関して問題があります。

Webサイト(具体的にはブログ)からテキストを取得しようとしましたが、取得したテキストを読むと破損しています。ÎÏκοÏÏÏÏοÏÏÏÏÏονのようなものが表示されます。一方、英語の文字は見栄えがします。

Webサイトの文字セットは「UTF-8」であり、スクリプトの文字セットも同様です。

CURLには次の設定を使用します。

$ch = curl_init();
$useragent='Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2';
$header = array('Accept-Charset: UTF-8');

curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);    

Xpathクエリを使用し$res=$xp->query("...")てテキストの場所を見つけます。

それから私はこのようなテキストを取ります:

foreach($res as $text_result)
    $texter=trim($text_result->nodeValue);

返されたテキスト文字セットmb_detect_encodingとその適切な「UTF-8」を確認しました。

スクリプトはほとんどのWebサイトで正しく実行されますが、そのうちの2つでは失敗します。
何が問題なのかわかりません。

誰かアイデアがありますか?
よろしくお願いします。

アップデート

これを追加してエラーを修正しました:

$doc->loadHTML('<?xml encoding="UTF-8">' . $html);

しかし今、私がデータベースにテキストを挿入するとき、それらは壊れたままです。私のPC(easyphp)でも同じように動作します。

私は000webhostで無料のホストを所有しています。

4

1 に答える 1

2

解決策を見つけました。

次の方法で、htmlエンティティのエンコーディングを変換する必要がありました。

@$dom->loadHTML(mb_convert_encoding($data, 'HTML-ENTITIES', 'UTF-8'));

ここに解決策がありました:解決策

于 2012-10-04T14:40:32.400 に答える