2015-04-23 143 views
1

獲取UTF8 DOM我有以下代碼:從UTF8文件

<?php 

header('Content-Type: text/html; charset=utf-8'); 

function getSource($url) 
{ 
    if (!function_exists('curl_init')) 
    { 
     die('CURL is not installed!'); 
    } 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_ENCODING, "UTF-8"); 
    $output = curl_exec($ch); 
    curl_close($ch); 

    return $output; 
} 

$source = getSource('http://www.website.com/'); 
var_dump($source); die(); 

和文件本身是UTF-8。事情是輸出的UTF-8字符顯示不正確。相反,它們會顯示爲問號或其他垃圾。

解決這個問題的唯一辦法就是將文件編碼爲ISO-8859-1。但我不想那樣。這裏有什麼問題?

回答

1

傳遞給CURLOPT_ENCODING值是(一)無效,(B)毫無意義的,因爲它不會強制捲曲它獲取到你想要的編碼內容翻譯。如果遠程站點返回ISO-8859-1,則必須自行將其轉換爲UTF-8。

CURLOPT_ENCODING用於在讀取頁面時接受Accept-Encoding:標題。有效值爲"identity","deflate""gzip"。正如你所看到的,它對字符集編碼沒有意義。

+1

可能值得一提的是轉換的一些方法 - 「mb_convert_encoding」和「iconv」浮現在腦海。 – IMSoP