2009-10-19 88 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); 

希望你得到它的工作!