该字符串未采用有效的 UTF-8 编码进行编码。它可能采用另一种编码,例如 UTF-16,或者可能只是包含一些与任何格式不对应的二进制垃圾。
最重要的是,由于您指定“UTF-8”作为 htmlspecialchars() 的编码类型参数,因此如果字符串不符合“UTF-8”,它将返回空字符串。它在PHP手册 http://php.net/manual/en/function.htmlspecialchars.php.
一个简单的修复方法是使用替换或忽略标志。改变:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")
To:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")
Or:
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")
注意:ENT_IGNORE 删除不符合要求的字节。这可能会导致安全问题 http://unicode.org/reports/tr36/#Deletion_of_Noncharacters.最好真正理解字符串的内容及其编码方式。纠正问题的根源,而不是使用简单的 ENT_IGNORE 修复。
你应该问自己why你的字符串不是用UTF-8编码的...should是,但事实并非如此。
我刚刚也遇到了这个问题;您可以阅读有关为什么返回空字符串的详细信息here https://stackoverflow.com/questions/11705829/htmlspecialchars-causing-text-to-disapear.