2012-05-15 3 views
1

Я использую UTF-8 всюду на сайте, данные также возвращаются в UTF-8, он работает повсюду на странице, за исключением одного случая: значение формы (zend) ,Zend Form Отображает странные символы на неанглийских символах

Я проверил все, строка utf-8, кодировка страницы - utf-8, результатом Api является utf8.

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

Это то, что я вижу в дивы, а также в заголовке тоже:

Margarétáóűúőüö 

Это то, что я получил в виде:

Margarétáóűúőüö 

Я пробовал много вещей, utf8_encode, mb_convert_encoding, но ничего не произошло.

Я использовал помощник, то $ имя содержит «» Margarétáóűúőüö значения:

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

CAn Вы покажете, что вы используете, чтобы отобразить форму? – Artefacto

+0

Кстати, у вас есть данные UTF-8, которые отображаются как windows-1252 (вариант ISO-8859-1): http://codepad.viper-7.com/ehrv5Q Итак, либо вы показываете исходные данные UTF-8 как ISO-8859-1 или вы показываете как UTF-8, но данные прошли преобразование из ISO-8859-1 в UTF-8, хотя исходные данные не были в ISO-8859-1. – Artefacto

+0

Это просто происходит с формами, как на этикетке, так и в элементах. Похоже, что он закодирован в двойном порядке. – tildy

ответ

0

Я просто понял, что мы использовали помощник partialLoop + формы, чтобы получить подчиненный. К сожалению, мы использовали DOM в нем, а функция saveHTML() в DOM немного ошибочна, не очень хорошо обрабатывайте символы UTF-8.

Когда я удалил эту подформу и использовал $ form = new Form_UserSettingsForm ($ user); напрямую, он работал хорошо.

Будьте осторожны, когда вы используете функцию $ dom-> saveHTML() в любом месте вашего кода!

Смежные вопросы