2012-09-19 54 views
2

我有一個關於PHP,CURL和UT-8希臘字符的問題。PHP CURL返回的文本使用UTF-8希臘語損壞

我嘗試從網站(特別是博客)檢索一些文本,但是當我讀取檢索到的文本時,它已損壞。它顯示出類似於我想我想我想我的同胞想要我。另一方面英文字符顯示很好。

網站的字符集是'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」。

該腳本在大多數網站上都能正常運行,但是其中兩個網站會失敗。
我無法弄清楚問題可能是什麼。

有沒有人有想法?
謝謝大家提前。

UPDATE

我已經加入這個固定的錯誤:

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

但現在,當我插入文本到數據庫中,他們仍然損壞。在我的電腦(easyphp)相同的工作正常。

我在000webhost擁有免費主機。

回答

2

我找到了解決方案。

我不得不轉換的HTML實體編碼,通過:

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

解決方案給予這裏:solution