问问题
6472 次
1 回答
14
该字符串未以有效的 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 编码的……应该是,但不是。
我恰好也遇到了这个问题;您可以在此处阅读有关为什么返回空字符串的详细信息。
于 2012-07-29T03:36:18.027 回答