2009-10-19 6 views
0

내 사이트에 utf-8 인코딩 (Drupal)이 있습니다.인코딩 문제 (PHP)

나는 제 3 자 서비스와 내 페이지를 통합하기 위해 기능을 포함하여 을 사용합니다. 하지만 이것은 나쁜 결과를 낳습니다 - 페이지의 일부를 포함하기위한 잘못된 인코딩.

나는 이것을 시도, 그러나 이것은 어떤 결과를 제공하지 않습니다 : 내가 인코딩을 알고 mb_detect_encoding을 사용하여이 전에

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

파일 포함되어

$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의 웹 서버에 의해 "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); 

는 희망 당신은 그것을 작동하게!