2012-05-15 26 views
1

我在網站上的任何地方都使用UTF-8,數據也以UTF-8的形式返回,它在頁面上的任何地方都可以工作,除了一種情況:(zend)表單值。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,但沒有發生任何事情。

我用了一個幫手,在$名稱中包含「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中,數據也會從ISO-8859-1轉換爲UTF-8。 – Artefacto

+0

它只是在形式,標籤以及元素中發生。它看起來像是雙重編碼。 – tildy

回答

0

我才意識到,我們使用了partialLoop +表單輔助,以獲得一個子窗體。不幸的是,我們在其中使用了DOM,DOM中的saveHTML()函數有點bug,不能很好地處理UTF-8字符。

當我刪除此子窗體並使用$ form = new Form_UserSettingsForm($ user);直接,它運作良好。

所以要小心,當你在代碼中的任何地方使用$ dom-> saveHTML()函數!