Zend Form在填充时显示Htmlentities而不是重音

时间:2011-05-03 16:04:27

标签: zend-framework zend-form populate html-entities

无法找到解决这个奇怪问题的方法。

我有一个Zend_Form,它填充了来自Mysql数据库的数据。 我已经为UTF-8设置了所有设置

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

我从db获得的结果集是正确的,带有重音和所有,但是当我尝试填充表单时,它显示例如& aacute而不是á。 我尝试使用htmlspecialchars_decode和html_entity_decode对结果集进行解码,但是当我填充表单时,它会显示html实体。 在解码html后我也尝试使用UTF8编码,但结果更糟糕,有奇怪的字符和htmlentities。

有没有人有任何想法帮助我?

2 个答案:

答案 0 :(得分:4)

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

$element->setAttrib("escape", false);

如果您需要一些过滤器,您必须配置编码,这里是注释中提到的示例:

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

像StringToLower这样的过滤器正在实现一个名为“setEncoding();”

的方法

答案 1 :(得分:0)

如果您不需要保留“已清理”的HTML实体,请改用StripTags过滤器。当HtmlEntities对它们进行编码时,StripTags会删除HTML和PHP标记。

试试这个:

$filter = new Zend_Filter_StripTags();

而不是:

$filter = new Zend_Filter_HtmlEntities()