我已经看到了这个问了几次,但不是一个好的解决方案。 我有以下字符串:
$string = "<p>Résumé</p>";
我想打印或回声字符串,但输出将返回<p>R sum </p>
所以,我尝试htmlspecialchars()
或htmlentities()
其输出<p>Résumé<p>
和浏览器呈现<p>Résumé<p>
。 我想,很明显,呈现此:
恢复
而我使用UTF-8:
header("Content-type: text/html; charset=UTF-8");
我缺少的是在这里吗? 为什么回声和打印输出的任何特殊字符? 为了澄清,该字符串实际上是存储在数据库中的整个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
text / html的文件。 (正如其他人所说,你也可以通过更新您做到这一点.ini
或.htaccess
文件)。 然后 ,一旦浏览器开始到指定的文件解析到DOM,输出将服从任何<meta charset="">
规则但你要ISO人物的机智。
你可以有PHP和HTML的混合在你的PHP文件...只是做这样的事情...
<?php
$string = htmlentities("Résumé");
?>
<html>
<head></head>
<body>
<p><?= $string ?></p>
</body>
</html>
这应该输出Résumé
只是如何你想让它。
如果您没有启用短标签做,更换<?= $string ?>
与<?php echo $string; ?>
<?php echo $string; ?>
所以,我尝试用htmlspecialchars()或ヶ辆(),其输出<P>恢复<p>和浏览器呈现<P>恢复<P>。
如果你有它的工作在此它显示Résumé
与<p></p>
周围的标签,那么就没有转换的段落,只是你的字符串。 然后,该段将呈现为HTML和您的字符串将内显示。
在PHP中有一个相当不错的功能函数utf8_encode()来解决这个问题。
echo utf8_encode("Résumé");
//will output Résumé instead of R�sum�
检查PHP官方页面。
$海峡= “你的名字是O \'VINS?”;
//输出:你的名字是O'vins? 回波的stripslashes($ STR);
这对我的作品:
创建/编辑.htaccess
与这些行的文件:
AddDefaultCharset UTF-8
AddCharset UTF-8 .php
如果你喜欢创建/编辑php.ini
:
default_charset = "utf-8"
资料来源:
- https://stackoverflow.com/a/6989559/496176
- https://stackoverflow.com/a/1610475/496176
试试这个
输入:
<!DOCTYPE html>
<html>
<body>
<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>
<p>Converting < and > into entities are often used to prevent browsers from using it as an HTML element. <br />This can be especially useful to prevent code from running when users have access to display input on your homepage.</p>
</body>
</html>
输出:
This is some <b>bold</b> text.
Converting < and > into entities are often used to prevent browsers from using it as an HTML element. This can be especially useful to prevent code from running when users have access to display input on your homepage.
这对我的作品。 试试这个HTML开始之前。 我希望它也能够为您服务。
<?php header('Content-Type: text/html; charset=iso-8859-15'); ?> <!DOCTYPE html> <html lang="en-US"> <head>
最近有一个类似的问题时,以下为我工作:
$str = iconv('iso-8859-15', 'utf-8', $str);