【问题标题】:Zend Framework Form not rendering special characters like (ä, ö, ü etc) - makes the form element value emptyZend 框架表单不呈现特殊字符,如(ä、ö、ü 等) - 使表单元素值为空
【发布时间】:2013-04-17 16:26:26
【问题描述】:

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

例如,如果我有$name->setLabel('Nameü: ');,那么它不会显示标签,但是当我将它改回$name->setLabel('Name: '); 时,它会显示正确。

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

如何修复它以正确显示?好像是某种形式的渲染问题。

【问题讨论】:

    标签: forms zend-framework


    【解决方案1】:

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

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

    default_charset = utf-8
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

          我会检查:

          • 查看字符集
          • 数据库字符集(后端)
          • Zend_Db_Adapter 字符集
          • 文件字符集

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

          【讨论】:

            【解决方案5】:

            应该像在元素标签装饰器上将转义标志设置为 false 一样简单。

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-05-20
              • 2016-07-21
              • 2013-03-13
              • 1970-01-01
              • 2020-10-17
              • 1970-01-01
              • 2011-10-27
              相关资源
              最近更新 更多