当前位置: 首页 > 面试题库 >

如何在PHP中显示特殊字符

白淇
2023-03-14
问题内容

我已经多次看到这个问题,但是分辨率不高。我有以下字符串:

$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");

我在这里想念什么?为什么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-1text /
html文件。(正如其他人所提到的,您也可以通过更新您的.ini.htaccess文件来完成此操作。) 然后
,一旦浏览器开始将给定文件解析为DOM,输出将遵循任何<meta charset="">规则,但保持ISO字符完整。



 类似资料:
  • 问题内容: 我无法从网络服务向数据库发送或显示带有特殊字符的文本。在月食中,我已将字符编码设置为UTF-8,但仍然无法显示字符。例如像下面的代码的简单打印 要么 在控制台上的结果,如果我将其发送到数据库,则结果为??????。我如何使它正确显示在控制台上以及希望在数据库中正确显示 问题答案: 是的,它是XXI 世纪,我们仍在努力处理字符编码等问题。 我的第一个猜测是: 您的源文件编码可能是错误的(

  • 我无法将带有特殊字符的文本从webservice发送或显示到数据库。在我的eclipse上,我已经将字符编码设置为UTF-8,但它仍然不允许我显示字符。例如,一个简单的打印,如下面的代码 或 控制台上的结果是??????,如果我把它发送到我的数据库。我如何使它正确地显示在控制台上,希望在数据库中

  • 问题内容: 我该如何更换: “ã”和“ a” “é”和“ e” 在PHP中?这可能吗?我读过某处我可以使用基本字符的ascii值和重音符号的ascii值进行一些数学运算,但是现在找不到任何参考。 问题答案: 这个答案是不正确的。 编写它时,我不理解Unicode规范化。查看francadaval的评论和链接 签出Normalizer类来执行此操作。文档很好,所以我将其链接起来,而不是在这里重复:

  • 问题内容: 我在数据库中有包含特殊字符的单词(大多数情况下为西班牙语,如波浪号)。在数据库中,所有内容均已保存并使用PHPmyAdmin正确显示,但是当我获取数据(使用PHP)并将其显示在浏览器中时,我得到了一个奇怪的字符,例如“?”。用一个正方形…我需要一个一般性的修补程序,因此我不必每次都转义每个字符,而且我还可以将PHP表单中的特殊西班牙字符插入数据库中… HTML是正确的: 所有表和数据库

  • 问题内容: 我想知道如何在使用“ less”命令时查看特殊字符。例如,我想查看带有特殊符号的不可打印字符。例如,在“ vi”编辑器中,我使用“ set list on”来查看由美元“ $”字符表示的行终止字符。同样,我想使用“较少”命令来执行此操作。 我提到的Unix手册较少,但无济于事。 问题答案: 较少会查看其环境,以查看是否有一个名为LESS的变量 您可以在〜/ .profile之一(.ba

  • 如果这是一个重复的问题,我道歉。我是一个特殊字符的新手,对特殊字符的编码和解码知之甚少。我到处寻找stackoverflow,尝试解决方案,但仍然无法解决我的问题。我在mysql数据库中存储了特殊字符,如。数据库排序规则为utf8\u bin。它在我的数据库字段中显示良好,但在我的页面上,它显示为