php - PHP中如何显示特殊字符

标签 php special-characters htmlspecialchars

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

$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; 。显然,我希望它能够呈现这个:

Résumé

我使用的是 UTF-8:

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

我在这里缺少什么?为什么echoprint输出 对于任何特殊字符?澄清一下,该字符串实际上是存储在数据库中的整个 HTML 文件。现实世界的应用不仅仅是那一小行。

最佳答案

经过多次讨论后,我对这个问题有了更好的理解,我想向其他可能遇到此问题的人发布此问题。

虽然UTF-8字符集会在客户端显示特殊字符,但另一方面,服务器可能不太适应,会打印特殊字符,例如àè .

要确保您的服务器能够正确打印它们,请使用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年后):

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

关于php - PHP中如何显示特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12699037/

相关文章:

php - 从自定义设置 session 文件夹中删除旧 session 文件?

java - 如何剥离 "garbage"个字符而不丢失有效的 "weird"个字符?

javascript - 测试特殊和 html 代码

php - htmlspecialchars 正在删除字符

php - imagick php 7.2 没有设置 webp 格式

PHP Time() 到 Google Calendar Dates 时间格式

javascript - 显示存储在 JavaScript 字符串中的 HTML 特殊字符

php - 在 PDO 准备和执行中使用 htmlspecialchars 函数

javascript - jQuery 在执行 Python 脚本 PHP 时加载 img

音频和视频控件中暂停符号的 HTML