2011-10-14 5 views
0

악센트 부호가있는 문자가 포함 된 문자열을 출력하는 웹 페이지가 있습니다.PHP의 포함 파일 내에서 악센트 부호가있는 문자

메인 페이지에 선언 된 변수 $myGlobalStr이 있는데이 코드는 outputGlobalVariable() 함수를 통해 반환됩니다. 모든 것이 예상대로 작동합니다. 나는 기능 outputFunctionVariable() 내에서 바로 그 같은 문자열을 선언 할 때

, 출력이

이 내 페이지에서 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">를 사용하려고 ... UTF-8 형식으로, 광고 또한의 시작 부분에 header('Content-type: text/html; iso-8859-1')을 포함하도록 시도 내 포함 파일. 둘 다 작동하지 않습니다.

전에 포함 파일에서 문자 세트를 지정하지 않았습니다. outputFunctionVariable()에서 함수 utf8_decode()을 사용할 수 있다는 것을 알고 있지만, 왜 이런 일이 일어나고 있는지 논리적으로 이해하는 데 관심이 있습니다 ...

Windows에서 Zend Server CE를 사용하고 있습니다.

의 index.php

<? 
    $myGlobalStr = "1. Dites bonjour à l'élève."; 
    include("includes/functions.php"); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 
<head> 
    <title>Test</title> 
</head> 

<body> 

<?=outputGlobalVariable()?> 
<hr> 
<?=outputLocalVariable()?> 

</body> 
</html> 

functions.php

<? 
    function outputGlobalVariable() { 
     global $myGlobalStr; 

     return $myGlobalStr; 
    } 

    function outputLocalVariable() { 
     $myStr = "2. Dites bonjour à l'élève."; 

     return $myStr; 
    } 
?> 

출력

1. Dites bonjour à l'élève. 
------------ 
2. Dites bonjour à l'élève. 
+0

아마도이 페이지를 수정하기 위해 사용하는 편집기가 문제를 일으키고 있으며, PHP의 잘못이 아닐 수도 있습니다. 어쨌든 functions.php는 index.php와는 다른 파일이므로 PHP가 PHP를 사용하기 훨씬 전에 trashing이 발생할 수있었습니다. –

답변

2

파일 중 하나에는 ISO-8859-1의 문자열과 다른 하나는 UTF-8 문자열이 들어 있습니다.
페이지가 Latin-1 문자셋으로 선언되었으므로 후자는 가비지 문자로 나옵니다.

둘을 섞어 사용하지 마십시오. UTF-8 스크립트를 식별하고 Latin-1로 다시 변환하십시오. 또는 모든 것을 UTF-8로 옮기십시오.

0

만약 .PHP 파일 (나는 두 ndex.php 및 functions.php)는 또한 시도 할 수 UTF-8 BOM으로 저장됩니다

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

어쨌든 그것은 좋은 생각이 당신이뿐만 아니라 모든 .PHP 파일을 함께 사용하는 인코딩과 일치하도록이다 메타 태그 및 Content-Type HTTP 응답 헤더가 있습니다.

관련 문제