2009-10-19 128 views
0

我的網站有一個utf-8編碼(Drupal)。編碼問題(php)

我使用包括函數將我的頁面與第三方服務集成。 但是這給了一個糟糕的結果 - 包含頁面的一部分的錯誤編碼。

我試試這個,但是這不給任何結果:

iconv("ASCII","utf-8",include("http://new.velo-travel.ru/themes/themex/spectrum_view.php?$QUERY_STRING")) 

這個我使用mb_detect_encoding知道編碼前

這是包含的文件

$url = 'http://young.spectrum.ru/cgi-bin/programs_form.pl'; 
$params = $_GET; 
if ($params){ 
    $url .= '?'; 
    foreach ($params as $key => $value) $url .= '&' . $keys . '=' . urlencode($value); 
} 

#$content = file_get_contents($url); 
echo iconv("cp-1251","utf-8", $url); 

回答

5

include函數不會返回一個字符串(除非您實際在包含的文件中調用return),它實際上將內容包含在您的源代碼中。因此,如果服務器返回PHP源代碼,它將在您的服務器上解釋(這基本上意味着「new.velo-travel.ru」的所有者可以控制您的站點:))。

另外,正如Augenfeind指出的那樣,該頁面在windows-1251中。所以,你可能想要:

echo iconv("windows-1251", "utf-8", file_get_contents("http://new.velo-travel.ru/themes/themex/spectrum_view.php?$QUERY_STRING")) 
1

那麼,您所包含的頁面將由velo-travel.ru的Web服務器以「windows-1251」的形式提供。

所以你可能想改變你的iconv-command中的編碼?!

1

嘗試使用mb_convert_encoding或iconv爲文件中的所有輸出文本和文字。例如:

$text = mb_convert_encoding($oldText, 'UTF-8', "ISO-8859-1"); 

$text = iconv("ISO-8859-1", "UTF-8", $oldText); 

希望你得到它的工作!