同时使用用htmlspecialchars和ヶ辆导致从项目未使用的输出如™
符号,甚至单'
行情。 显然,这是绝对没用,但是输出数据没有这个符号都使用HTML字符的结果。 任何理由为什么这是发生?
这里是导致该问题的代码:
<p>
<?php
echo nl2br(htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8"));
?>
</p>
同时使用用htmlspecialchars和ヶ辆导致从项目未使用的输出如™
符号,甚至单'
行情。 显然,这是绝对没用,但是输出数据没有这个符号都使用HTML字符的结果。 任何理由为什么这是发生?
这里是导致该问题的代码:
<p>
<?php
echo nl2br(htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8"));
?>
</p>
该字符串不是有效的UTF-8编码的。 这可能是像UTF-16另一种编码或也许它只是包含了一些二进制垃圾,不对应任何格式。
底线是,因为你指定的“UTF-8”作为用htmlspecialchars的编码类型参数(),它会返回一个空字符串,如果字符串不是以“UTF-8”的规定。 它指出这在PHP手册 。
一个简单的解决方法是使用替代品或忽略标志。 更改:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")
至:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")
要么:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")
注:ENT_IGNORE删除不符合规定的字节。 这可能会导致一个安全问题 。 这是更好地真正了解你的字符串的内容以及它如何被编码。 纠正问题的根源,而不是用简单的ENT_IGNORE修复。
你应该问自己,为什么你的字符串不是以UTF-8编码的...这是应该的,但事实并非如此。
我恰巧刚刚遇到了这个问题为好; 你可以阅读为什么被返回一个空字符串的细节在这里 。