我正在尝试设置Zend Form为我工作。我使用相同的表单来插入和编辑特定的数据库对象。该对象具有名称,我可以轻松地创建名为“Ülo”的新对象。它在数据库中正确保存,当我获取它以在报告中显示时,它显示correclty“Ülo”。问题在于形式。当我打开编辑表单时,name元素为空。所有其他元素都正确显示,如果我将它们更改为“ü”,它们也会显示为空。 Form元素标签也是如此。当我将标签设置为包含“ü”时,它不再显示标签。
例如,如果我有$name->setLabel('Nameü: ');
,那么它不会显示标签,但当我将其更改回$name->setLabel('Name: ');
时,它会显示相关内容。
当我$bcrForm->name->setValue('Ülo');
时它没有显示值,但是当我将其更改为$bcrForm->name->setValue('Alo');
时,它显示正确。
如何修复它才能正确显示?它似乎是某种形式渲染问题。
答案 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)
我会检查:
视图转义方法设置为期望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