Php Zend表单在非英语字符上显示奇怪的字符

Php Zend表单在非英语字符上显示奇怪的字符,php,character-encoding,zend-form,Php,Character Encoding,Zend Form,我在站点的任何地方都使用UTF-8,数据也以UTF-8的形式返回,它在页面上的任何地方都有效,除了一种情况:zend表单值 我已经检查了所有内容,字符串是utf-8,页面编码是utf-8,Api的结果是utf8 这是我在div和header中看到的: Margarétáóűúőüö 这是我在表格中得到的: Margarétáóűúőüö 我尝试了很多方法,utf8编码,mb转换编码,但是什么都没发生 我使用了一个助手,$name包含“Margarétáóűőüö”值:

我在站点的任何地方都使用UTF-8,数据也以UTF-8的形式返回,它在页面上的任何地方都有效,除了一种情况:zend表单值

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

这是我在div和header中看到的:

Margarétáóűúőüö
这是我在表格中得到的:

Margarétáóűúőüö
我尝试了很多方法,utf8编码,mb转换编码,但是什么都没发生

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

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

我刚刚意识到,我们使用partialLoop+表单帮助程序来获取a子表单。不幸的是,我们在其中使用了DOM,DOM中的saveHTML函数有点缺陷,不能很好地处理UTF-8字符

当我删除此子窗体并使用$form=new form\u usersettings form$user时;直接来说,它工作得很好


因此,在代码中任何地方使用$dom->saveHTML函数时,都要小心

你能展示一下你用什么来显示表单吗?顺便说一下,您所拥有的UTF-8数据显示为windows-1252 ISO-8859-1变体:因此,要么您将原始UTF-8数据显示为ISO-8859-1,要么您将其显示为UTF-8,但数据经历了从ISO-8859-1到UTF-8的转换,即使原始数据不在ISO-8859-1中。这只是发生在表单中,在标签中以及在元素中。它看起来像是双重编码的。当我使用Zend form帮助程序而不是Zend form时,似乎就发生了这种情况。你需要更多的时间来调查。请把你的代码片段贴在你得到的错误值的地方。这是我在表格中得到的,所以你关心的地方就更清楚了。
    $form = $this->_helper->form('user-settings');
    $form->addElement('text', 'name', array(
            'label'      => 'Name',
            'value'         => $name,
            'required'   => true,
            'autocapitalize' => 'off',
            'autocorrect' => 'off',
        ));