假设我包含一个包含html的文件。 html将字符作为感叹号,西班牙语口音(á,ó)。解析后的包含文本将作为符号处理,而不是正确的值。这发生在FF上,但不发生在IE(8)上。
我尝试过以下功能:
htmlspecialchars,htmlentities,utf8_encode
include htmlentities("cont/file.php");
示例 file.php 内容:
<div>Canción, “Song Name”</div>
输出:
Canci�n, �Song Name�
答案 0 :(得分:2)
您的代码除了通过htmlentities()运行字符串“cont / fie.php”之外什么都不做,文件的内容不受此影响。
答案 1 :(得分:2)
您应该在正在查看此内容的HTML页面上将编码设置为UTF-8。 htmlentities
根本不会影响此文字。
我尝试使用以下代码完成相同的操作并且工作正常:
<强>的index.php 强>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>TODO supply a title</title>
</head>
<body>
<p>
TODO write content
<?php
include "test.php";
?>
</p>
</body>
</html>
<强> test.php的强>
<div>ääääääó</div>
答案 2 :(得分:0)
在character encoding中输出一个HTTP Content-Type标头,指定您正在使用的charset parameter(建议使用UTF-8)。
答案 3 :(得分:0)
echo htmlentities(file_get_contents("cont/file.php"));
是您可能会问的问题
但是,如前所述,您不能使用htmlentities而是使用UTB-8编码
答案 4 :(得分:0)
这就是最终处理两个不同的代码并完成这个工作的原因;原因很难知道,但解析的东西。
这是浏览器显示(FF + IE) - &gt;
alt text http://i77.photobucket.com/albums/j65/speedcoder/4-3-20101-22-31PM.png
示例**('include'函数不使用,因此不需要输出缓冲区):
<?php
$varr = '<div>ääääääó</div>';
echo utf8_encode($varr);
?>
这个对我不起作用:
<?php
include "test.php";
?>
如果上面的示例使用带有html代码的包含文件,则它至少不会为我转换字符。我将其更改为不包含文件并使用utf8_encode,但问题是我的代码需要使用包含函数的地方,但这不起作用。
下面的示例使用include方法和输出缓冲区,它允许在utf8_encode编码发生之前呈现和解析代码。
我的代码情景(因为我的特定情况必须是ob,因为include文件还包含需要首先解析的代码):
ob_start();
include ("cont/file.php");
$content = ob_get_contents();
ob_end_clean();
echo utf8_encode($content);
感谢您帮助我弄明白“OndrejSlinták” !!!