【发布时间】: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_encode,mb_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