2009-07-28 80 views
5

我試圖將一些Excel數據移動到MySQL,但遇到了編碼問題。使用CakePHP進行UTF-8輸出

我所做的:

  1. 數據導出從的OpenOffice 3.1CSVUTF-8編碼)通過文件上傳
  2. 導入到phpMyAdmin(表編碼:'utf8_unicode_ci ')

在phpMyAdmin的視圖模式,正確顯示的數據(它使用UTF-8字符集爲):

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

當我嘗試在我的網頁上顯示的數據,我得到它問號的哈希值。

系統信息

  • 我試圖讓我的網頁上的語言: 德國
  • MySQL客戶端版本:5.0.32
  • 我的操作系統:Mac OS X 10.5.7
  • 服務器腳本:CakePHP的v1.2.3.8166

問候, Benedikt

回答

20

我也有類似的症狀,我的解決辦法是添加

'encoding' => 'UTF8' 

到config/database.php中

+2

不要錯過,這條線存在於默認配置中。但它被評論了。 – trante 2012-12-17 19:29:55

-1

您是否使用mysql設置與UTF-8的連接?

SET NAMES 'UTF-8' 
2

我也曾有過類似的問題這一點。大多數事情都是「開箱即用」設置正確的,但我只想指出以下事情,我發現有用...我從開發移動到現場時遇到此問題:

您需要匹配數據庫編碼(2項檢查)以及視圖編碼。

  • 您的DB編碼在架構中設置。
  • 蛋糕PHP可以手動強制期望來自數據庫的一種編碼。
  • Cake PHP然後需要調用視圖的正確編碼。

DB設置當然是在您的數據庫中設置的。在我的情況下,使用MySQL工作臺,這只是右鍵單擊架構並選擇「Alter Schema ...」的情況。從那裏我可以選擇我想要的編碼/整理。

在Cake PHP中,數據庫編碼設置在app \ Config \ database.php中。您應該確保DATABASE_CONFIG陣列(大約第60行)啓用/選擇了正確的編碼。例如:

'encoding' => 'utf8' 

最後,視圖需要選擇正確版本的HTML來顯示。這是從文件app \ Config \ core.php(大約第82行)寫入您的模板。

Configure::write('App.encoding', 'UTF-8'); 

一旦所有三個部分都改變了,你應該有一個一致的字符集,因此顯示。

希望幫助任何人仍然在尋找這個。