首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >htmlspecialchars输出空白

htmlspecialchars输出空白
EN

Stack Overflow用户
提问于 2012-06-26 15:11:20
回答 1查看 6.6K关注 0票数 6

同时使用htmlspecialchars和items实体会导致来自诸如符号甚至单个'引号的项目的空输出。显然,这是绝对无用的,但是输出数据而不使用html字符会导致这两个�的符号。为什么会发生这种事?

造成问题的代码如下:

代码语言:javascript
复制
<p>
<?php 
    echo nl2br(htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")); 
?>
</p>
EN

回答 1

Stack Overflow用户

发布于 2012-07-29 03:36:18

该字符串不是用有效的UTF-8编码编码的.它可能是另一种编码方式,如UTF-16,或者可能只是包含一些与任何格式不相对应的二进制垃圾。

底线是,由于您将"UTF-8“指定为htmlspecialchars()的编码类型参数,如果字符串不符合"UTF-8”,它将返回一个空字符串。它在PHP手册中说明了这一点。

一个简单的解决方法是使用替换标志或忽略标志。更改:

代码语言:javascript
复制
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8")

至:

代码语言:javascript
复制
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8")

或者:

代码语言:javascript
复制
htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8")

注释: ENT_IGNORE移除不兼容的字节。这可能导致安全问题.,更好的是真正理解字符串的内容以及它是如何被编码的。纠正问题的根源,而不是使用简单的ENT_IGNORE修复。

你应该问问自己为什么你的字符串不是用UTF-8编码的.应该是,但事实并非如此。

我碰巧也遇到了这个问题;您可以阅读关于为什么返回空字符串的详细信息,这里

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11210413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档