编码问题(php)

时间:2009-10-19 11:23:03

标签: php encoding

我的网站有一个utf-8编码(Drupal)。

我使用 include 功能将我的页面与第三方服务集成。 但这会产生一个糟糕的结果 - 包含部分页面的错误编码。

我试试这个,但这不会给出任何结果:

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);

3 个答案:

答案 0 :(得分: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 :(得分:1)

嗯,您所包含的页面由velo-travel.ru的网络服务器以“windows-1251”的形式发送。

所以你可能想在iconv-command中更改编码?!

答案 2 :(得分:1)

对文件中的所有输出文本和文字尝试使用mb_convert_encoding或iconv。例如:

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

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

希望你能让它发挥作用!