2011-10-14 23 views
0

我有一個輸出包含重音字符的字符串的網頁。PHP中包含文件中的重音字符

我有主頁中聲明的變量$myGlobalStr,然後通過函數outputGlobalVariable()返回。一切按預期工作。

當我聲明函數outputFunctionVariable()內的非常相同的字符串,輸出爲UTF-8格式..

我想在我的網頁使用<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">,廣告我也試圖包括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獲得它們之前很久就會發生垃圾。 –

回答

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響應標題。

相關問題