【问题标题】:Zend Form Displays weird chars on non-english charsZend Form 在非英文字符上显示奇怪的字符
【发布时间】:2012-05-15 09:44:29
【问题描述】:

我在网站上的所有地方都使用 UTF-8,数据也以 UTF-8 格式返回,它在页面上的任何地方都可以使用,除了一种情况:(zend) 表单值。

我已经检查了所有内容,字符串是utf-8,页面编码是utf-8,Api的结果是utf8。

(Margar\u00e9t\u00e1\u00f3\u0171\u00fa\u0151\u00fc\u00f6)

这就是我在 div 和标题中看到的:

Margarétáóűúőüö

这是我在表格中得到的:

Margarétáóűúőüö

我已经尝试了很多东西,utf8_encodemb_convert_encoding,但什么也没发生。

我使用了一个助手,$name 包含 'Margarétáóűúőüö' 值:

    $form = $this->_helper->form('user-settings');
    $form->addElement('text', 'name', array(
            'label'      => 'Name',
            'value'         => $name,
            'required'   => true,
            'autocapitalize' => 'off',
            'autocorrect' => 'off',
        ));

【问题讨论】:

  • 您能展示一下您用来显示表单的内容吗?
  • 顺便说一句,您所拥有的 UTF-8 数据显示为 windows-1252(ISO-8859-1 变体):codepad.viper-7.com/ehrv5Q 所以要么您显示原始 UTF- 8 个数据为 ISO-8859-1,或者您显示为 UTF-8,但数据经历了从 ISO-8859-1 到 UTF-8 的转换,即使原始数据不在 ISO-8859-1 中。
  • 它只发生在表单、标签以及元素中。看起来是双重编码的。
  • 当我使用 Zend 表单助手而不是 zend 表单时,它似乎只是发生了。需要更多时间调查。
  • 请将您的代码片段发布到您获得错误值的位置(“这就是我在表单中得到的部分”),以便更清楚您在哪一点担心。

标签: php character-encoding zend-form


【解决方案1】:

我刚刚意识到,我们使用了 partialLoop + 表单助手来获取 a 子表单。不幸的是,我们在其中使用了 DOM,而 DOM 中的 saveHTML() 函数有点错误,不要很好地处理 UTF-8 字符。

当我删除这个子表单并使用 $form = new Form_UserSettingsForm($user);直接,效果很好。

所以当你在代码中的任何地方使用 $dom->saveHTML() 函数时要小心!

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 2011-06-28
    • 2016-11-30
    • 2014-11-04
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多