我有一个网页,输出一个包含重音字符的字符串。
我有在主页面中声明的变量$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.
答案 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响应标头之间使用的编码之间保持一致是个好主意。