无法找到解决这个奇怪问题的方法。
我有一个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。
有没有人有任何想法帮助我?
答案 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()