【问题标题】:Non-english characters in Zend_FormZend_Form 中的非英文字符
【发布时间】:2011-05-13 12:16:56
【问题描述】:

我正在使用 Zend_Form 创建一个表单,所有包含变音符号的单词都不会被渲染。编码设置为UTF-8,数据库的排序规则设置为utf-8_unicode。我还应该做什么/检查?

页眉:

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

Zend_form 部分:

        $user = Doctrine::getTable("aclUser")->find(1, Doctrine_Core::HYDRATE_ARRAY);
        $this->addElement('text','providerName',
            array(
                'label'     => 'Provider_name',
                'required'  => false,
                'readonly'  => true,
                'value'     => $user['name'],
                'filters'   => array('StringTrim'),
                'decorators'=> array(new Application_Form_Decorators_Custom())
            )
        );

【问题讨论】:

  • 你可以发布一些示例代码吗?
  • 已添加。不知道有没有帮助...
  • 数据库连接字符集utf-8也是吗?
  • collat​​ion_database 变量设置为 utf-8_unicode_ci
  • @Phil:感谢您的建议。这是问题之一。

标签: zend-framework encoding character-encoding zend-form


【解决方案1】:

提交表单本身可能是个问题

将表单的 accept-charset 设置为 UTF-8 有帮助吗?

<form accept-charset="UTF-8">
   [form elements]
</form>

【讨论】:

  • 好主意,但我认为问题在于显示初始表单值,不接受新值
【解决方案2】:

解决了。我在 my.cnf 中添加了此设置,现在一切正常:

[client] 
default-character-set=utf8 

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
default-character-set=utf8 
character-set-server = utf8 
collation-server = utf8_unicode_ci 

[mysql] 
default-character-set=utf8 

【讨论】:

  • 仅供参考通过SET NAMES设置字符集也设置排序规则
  • 我不知道。谢谢菲尔!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 2011-08-19
相关资源
最近更新 更多