如何在 PHP 中显示特殊字符

我已经多次看到这个问题,但没有一个很好的解决方案。我有以下字符串:

$string = "<p>Résumé</p>";

我想打印或回显字符串,但输出将返回。所以我尝试或哪个输出和浏览器呈现.显然,我希望它呈现以下内容:<p>R�sum�</p>htmlspecialchars()htmlentities()&lt;p&gt;R&eacute;sum&eacute;&lt;p&gt;&lt;p&gt;R&eacute;sum&eacute;&lt;p&gt;

简历

我使用的是 UTF-8:

header("Content-type: text/html; charset=UTF-8");

我在这里错过了什么?为什么为任何特殊字符执行和输出 a?为了澄清,该字符串实际上是存储在数据库中的整个HTML文件。实际应用不仅仅是那一条小线。echoprint


答案 1

经过多次争吵,我对我想为可能遇到过此问题的其他人发布的问题有了更好的理解。

虽然 UTF-8 字符集将在客户端上显示特殊字符,但另一方面,服务器可能不那么合适,并且会打印特殊字符,如 和 as 和 。àè

要确保您的服务器能够正确打印它们,请使用字符集:ISO-8859-1

<?php
    /*Just for your server-side code*/
    header('Content-Type: text/html; charset=ISO-8859-1');
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"><!-- Your HTML file can still use UTF-8-->
        <title>Untitled Document</title>
    </head>
    <body>
        <?= "àè" ?>
    </body>
</html>

这将正确打印:àè


编辑(4年后):

我现在有了更好的理解。这有效的原因是客户端(浏览器)被告知,通过响应,期望一个文本/ html文件。(正如其他人所提到的,您也可以通过更新您的或文件来执行此操作。然后,一旦浏览器开始将给定文件解析为DOM,输出将遵循任何规则,但保持ISO字符不变。header()ISO-8859-1.ini.htaccess<meta charset="">


答案 2

您可以在PHP文件中混合使用PHP和HTML...只是做这样的事情...

<?php
$string = htmlentities("Résumé");
?>

<html>
<head></head>
<body>
<p><?= $string ?></p>
</body>
</html>

这应该输出你想要的样子。Résumé

如果您没有启用短标签,请将<?= $string ?><?php echo $string; ?>


推荐