2013-08-12 60 views
0

我正在使用Simple HTML DOM Class進行網頁報廢。問題是它針對unicode字符生成怪異字符。用於解析的簡單HTML DOM生成錯誤

हंगामा है कà¥à¤¯à¥‚ठबरपा/अकबर इलाहाबादी 

針對印地語unicode字符。

लेकिन इतना तो हुआ कुछ लोग 

它是我的印地文文本。

當我打印屏幕輸出時,它會輸出相同的奇怪字符。

function getDomContent($data) { 
    $html = new simple_html_dom(); 
    $html->load($data); 

    foreach ($html->find('table[id=content] li') as $element) { 
     $content[] = $element->plaintext; 
    } 

    return $content; 
} 

我捲曲功能

function getContent($url) { 
    $timeout = 5; 
    $ch = curl_init(); 
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0'; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

$data = getContent($url); 
$content = getDomContent($data); 
echo '<pre>Array Content: ' . '<br/>'; 
print_r($content); 
die($query); 

回答

0

我解決它通過添加標題,我的網頁...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

它解決了所有的問題。

0

看來問題encodification。 嘗試使用iconv PHP函數。

$text = iconv("current text codification", "UTF-8", $text) 

但是,如果你不知道當前的編碼嘗試iconv_set_encoding設置它像全局配置。

iconv_set_encoding("internal_encoding", "UTF-8"); 
+0

準確地在哪裏做?在我的所有功能之前或在功能上,在捲曲中或其他地方。 – Sankalp

+0

如果你知道你當前的編碼,你必須在接收文本後使用第一個函數,但是如果你想使用全局配置,只需在函數調用之前使用第二個函數** getContent ** –

+0

第二個函數什麼都不做......第一個函數跳過我的返回空字符串的內容。如果我使用它。 – Sankalp