Php htmlspecialchars输出空白
同时使用htmlspecialchars和htmlentities会导致Php htmlspecialchars输出空白,php,html,htmlspecialchars,Php,Html,Htmlspecialchars,同时使用htmlspecialchars和htmlentities会导致™符号,甚至是单引号。显然,这是完全没有用的,但是不使用html字符输出数据会导致这两种情况的符号�. 发生这种情况的原因是什么 以下是导致问题的代码: <p> <?php echo nl2br(htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")); ?> </p> 该字符串未采用有效的UT
™代码>符号,甚至是单引号。显然,这是完全没有用的,但是不使用html字符输出数据会导致这两种情况的符号�. 发生这种情况的原因是什么
以下是导致问题的代码:
<p>
<?php
echo nl2br(htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8"));
?>
</p>
该字符串未采用有效的UTF-8编码。它可能是另一种编码方式,比如UTF-16,或者可能只是包含一些二进制垃圾,与任何格式都不对应
底线是,由于您指定“UTF-8”作为htmlspecialchars()的编码类型参数,因此如果字符串不符合“UTF-8”,它将返回一个空字符串。它在报告中说明了这一点
一个简单的修复方法是使用替换或忽略标志。更改:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")
致:
或:
注意:ENT\u IGNORE将删除不兼容的字节。这可能会导致。最好真正了解字符串的内容及其编码方式。纠正问题的根源,而不是使用简单的ENT_IGNORE修复程序
你应该问问自己为什么你的字符串没有用UTF-8编码。。。应该是,但不是
我正好也遇到了这个问题,;您可以阅读有关返回空字符串原因的详细信息。听起来像是字符集问题。你确定你的数据是UTF-8编码的吗?我可能误解了你的问题,但我在ideone.com上试过了,似乎效果很好:@EmilVikström我如何确保这一点?@EricH是的,在我的一个网站上效果很好,但是对于另一个代码相同的代码,它输出不正确。@JimmyBanks您可以尝试utf8\u encode()
:P.S.我也建议将ENT\u COMPAT改为ENT\u引号,但一如既往,我认为这取决于您的具体情况。这个答案让我高兴。。谢谢
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")