2

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

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

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

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

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

4

2 回答 2

4

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

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

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

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

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

于 2011-05-03T16:09:44.700 回答
0

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

试试这个:

$filter = new Zend_Filter_StripTags();

代替:

$filter = new Zend_Filter_HtmlEntities()
于 2011-12-02T20:53:06.483 回答