Php htmlspecialchars输出空白

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

同时使用htmlspecialchars和htmlentities会导致
符号,甚至是单引号。显然,这是完全没有用的,但是不使用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")