首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中显示特殊字符

如何在PHP中显示特殊字符
EN

Stack Overflow用户
提问于 2012-10-03 06:03:49
回答 10查看 120.7K关注 0票数 16

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

代码语言:javascript
复制
$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:

代码语言:javascript
复制
header("Content-type: text/html; charset=UTF-8");

这里我漏掉了什么?为什么echoprint会为任何特殊字符输出一个?为澄清起见,该字符串实际上是存储在数据库中的整个HTML文件。现实世界中的应用程序不只是这一小行。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2012-10-08 22:55:03

经过多次面对面的讨论,我对这个问题有了更好的理解,我想把这个问题发布给其他可能有这个问题的人。

虽然UTF-8字符集将在客户机上显示特殊字符,但另一方面,服务器可能不是很好用,它会将特殊字符(如àè )打印为

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

代码语言:javascript
复制
<?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字符不变。

票数 44
EN

Stack Overflow用户

发布于 2018-05-07 16:03:12

在PHP中,有一个非常好的函数utf8_encode()可以解决这个问题。

代码语言:javascript
复制
echo utf8_encode("Résumé");

//will output Résumé instead of R�sum�

Check the official PHP page.

票数 4
EN

Stack Overflow用户

发布于 2012-10-03 06:14:52

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

代码语言:javascript
复制
<?php
$string = htmlentities("Résumé");
?>

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

这应该会按照您想要的方式输出Résumé

如果未启用短标签,请将<?= $string ?>替换为<?php echo $string; ?>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12699037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档