PHP中包含文件中的重音字符

时间:2011-10-14 17:09:53

标签: php character-encoding include

我有一个网页,输出一个包含重音字符的字符串。

我有在主页面中声明的变量$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')。两者都不起作用。

之前我从未在include文件中指定字符集。我知道我可以在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. 

2 个答案:

答案 0 :(得分:2)

其中一个文件包含ISO-8859-1中的字符串,另一个文件包含UTF-8字符串 现在你的页面是用Latin-1字符集声明的,后者会出现乱码。

不要混淆两者。确定UTF-8脚本并将其转换回Latin-1。或者为了一切而转向UTF-8。

答案 1 :(得分:0)

如果使用utf-8 BOM保存.php文件(index.php和functions.php),您也可以尝试:

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

无论如何,在所有.php文件以及元标记和Content-Type HTTP响应标头之间使用的编码之间保持一致是个好主意。