Zend Framework Form不渲染像(ä,ö,ü等)这样的特殊字符 - 使表单元素值为空

时间:2012-05-11 09:39:15

标签: forms zend-framework

我正在尝试设置Zend Form为我工作。我使用相同的表单来插入和编辑特定的数据库对象。该对象具有名称,我可以轻松地创建名为“Ülo”的新对象。它在数据库中正确保存,当我获取它以在报告中显示时,它显示correclty“Ülo”。问题在于形式。当我打开编辑表单时,name元素为空。所有其他元素都正确显示,如果我将它们更改为“ü”,它们也会显示为空。 Form元素标签也是如此。当我将标签设置为包含“ü”时,它不再显示标签。

例如,如果我有$name->setLabel('Nameü: ');,那么它不会显示标签,但当我将其更改回$name->setLabel('Name: ');时,它会显示相关内容。

当我$bcrForm->name->setValue('Ülo');时它没有显示值,但是当我将其更改为$bcrForm->name->setValue('Alo');时,它显示正确。

如何修复它才能正确显示?它似乎是某种形式渲染问题。

5 个答案:

答案 0 :(得分:1)

这个帮我解决了这个问题:

确保这些设置位于/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini中:

default_charset = utf-8

答案 1 :(得分:0)

你检查过编码吗?尝试将此添加到头...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

答案 2 :(得分:0)

确保您的脚本和视图文件都以UTF-8编码,并且您与数据库的连接也设置为UTF-8。

如果您使用的是mysql,则强制它通过打开数据库连接并运行来返回UTF-8数据:SET NAMES 'utf8'

或使用mysqli:mysqli_set_charset('utf8');

答案 3 :(得分:0)

我会检查:

  • 查看字符集
  • 数据库字符集(后端)
  • Zend_Db_Adapter charset
  • file charset

视图转义方法设置为期望utf8字符并且可以去除任何其他内容(即单字节奇怪的字符):)

答案 4 :(得分:0)

它应该像在元素标签装饰器上将escape flag设置为false一样简单。

$name->addDecorator('Label', аrray('escape'=>false));

或者查看setEscape()http://framework.zend.com/manual/1.12/en/zend.form.standardDecorators.html