Zend framework Zend表单在填充时显示Htmlentities而不是重音符号

Zend framework Zend表单在填充时显示Htmlentities而不是重音符号,zend-framework,zend-form,populate,html-entities,Zend Framework,Zend Form,Populate,Html Entities,找不到解决这个奇怪问题的办法 我有一个Zend_表单,其中填充了来自Mysql数据库的数据。 我已经为UTF-8做好了一切准备 resources.db.params.charset=“UTF8”和$this->\u view->headMeta()->appendHttpEquiv('Content-Type','text/html;charset=UTF-8') 我从数据库中得到的结果集是OK的,带有重音符号和all,但是当我尝试填充表单时,它会显示例如á而不是á。 我尝试使用h

找不到解决这个奇怪问题的办法

我有一个Zend_表单,其中填充了来自Mysql数据库的数据。 我已经为UTF-8做好了一切准备

resources.db.params.charset=“UTF8”和$this->\u view->headMeta()->appendHttpEquiv('Content-Type','text/html;charset=UTF-8')

我从数据库中得到的结果集是OK的,带有重音符号和all,但是当我尝试填充表单时,它会显示例如á而不是á。 我尝试使用htmlspecialchars_decode和html_entity_decode对结果集进行解码,但当我填充表单时,它仍然显示html实体。 我还尝试在解码html后使用UTF8编码,但结果更糟,有奇怪的字符和htmlentities


有人能帮我吗?

尝试禁用转义,您可以直接在元素上执行:

$element->setAttrib("escape", false);
如果需要一些过滤器,则必须配置编码,下面是注释中提到的过滤器示例:

$enc = array('quotestyle' => ENT_QUOTES, 'charset' => 'UTF-8');
$filter = new Zend_Filter_HtmlEntities($enc));
$element->addFilter($filter);

StringToLower之类的过滤器正在实现一个名为“setEncoding();”的方法。

如果不需要保留“净化”的HTML实体,请改用StripTags过滤器。StripTags删除HTML和PHP标记,而HtmlEntities对它们进行编码

试试这个:

$filter = new Zend_Filter_StripTags();
而不是:

$filter = new Zend_Filter_HtmlEntities()

你用过什么过滤器吗?你知道的。我正在使用HtmlEntities过滤器,我刚刚删除它工作!我认为过滤器是在验证表单时应用的,而不是在填充表单时应用的。那么现在我在验证时无法过滤htmlentities?无论如何,非常感谢你的帮助!ArneRie很抱歉再次就这个问题打扰您,但我找不到解决方案。正如您所说,我试图应用Html过滤器,但是第一个问题出现了,表单显示了htmlentities。如果过滤器被禁用,可以,但出于安全考虑,我不想禁用它。我阅读了所有Zend_Filter类文档,但是在没有显示htmlentities的情况下找不到实现过滤器的方法,如果你知道一种方法,请帮助我。谢谢我不知道你为什么需要这个过滤器?用StripTags试试?对了,我把Htmlenties和StripTags搞混了。。。再次感谢阿内里。祝你一切顺利!:-)对不起,我没有看到隐藏的评论。