【发布时间】:2012-04-27 21:23:54
【问题描述】:
我正在从我的数据库中提取数据(原始):
long's streetWe’d " tree < < ! cool & <body>
据我所知,为了将其输出到 html 页面,我需要将其包装在 htmlEntities 中。
但是当我包装它时,它什么也没输出。 var_dump 显示:
long's streetWe�d " tree < < ! cool & <body>
包装在 htmlspecialchars 输出中:
long's streetWe’d " tree < < ! cool & <body>
var_dump 输出与这个相同。
但是在不使用包装函数的情况下输出,因为它存储在数据库中。
当我输出它时,它通过表单填充方法显示(这个值在更大的数据数组中)
我不知道为什么会这样。有人知道吗?
这都是在 php 中使用 zend 和 mysql db 构建的。
亲切的问候,
【问题讨论】:
-
您正在通过 HTML 在网页上显示此内容?
-
是的,它正在填充到一个表单中,并且该表单正在输出到html页面
-
贴出您用于输出此文本的代码。
-
您确定您在此处发布的原始字符串是否正确?也许它已经在数据库中编码了?您是否尝试过通过 mysql 控制台界面(不是 phpMyAdmin)访问它?
-
根据我的经验,
htmlentities()通常是一种可怕的 hack,可以弥补沿线某处的不正确编码,并导致比它解决的问题更多 - 如果数据库、数据库连接器和输出文档都使用相同的字符集(例如 utf-8)你应该可能不需要使用htmlentities()。htmlspecialchars()是 -htmlentities()不是很多(有特定的情况,但通常没有)。
标签: php mysql html zend-framework utf-8