2011-11-21 80 views
1

我正在從cakephp保存到數據庫到mysql。當我使用phpmyadmin查看數據時,"driver's"被保存爲「driver」。有沒有辦法將這些條目保存爲正常的轉義字符?我以爲蛋糕會在他們進入數據庫之前處理這些事情。另外,如果我必須以這種方式保留它們,那麼當我將它們從數據庫中拉出時,如何避開它們?phpmyadmin正在將數據保存到mysql數據庫而不是從cakephp

CREATE TABLE IF NOT EXISTS `tablename` (
    `id` int(11) unsigned NOT NULL auto_increment, 
    `start` int(20) NOT NULL, 
    `stop` int(20) NOT NULL, 
    `completed` int(1) unsigned NOT NULL, 
    `score` varchar(10) default NULL, 
    `fc_module_id` int(11) unsigned NOT NULL, 
    `fc_section_id` int(11) unsigned NOT NULL, 
    `user_id` int(11) unsigned NOT NULL, 
    `selections` text character set latin1 collate latin1_bin NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1035 ; 

「選擇」欄是給我麻煩的那一欄。它並不總是設置爲latin1_bin,這是我嘗試使用utf8_bin之後嘗試的最新字符集。但是,我真的只是猜測字符集。

+0

數據來自哪裏? –

+1

看到這個問題和答案爲您的潛在解決方案:http://stackoverflow.com/questions/7662093/cakephp-mysql-insert-utf-8 – stealthyninja

+0

我的猜測是,你正在使用的工具(phpmyadmin)來驗證數據正確保存使用latin1編碼。將其更改爲utf8,數據將在phpmyadmin中呈現。 – hafichuk

回答

1

取消對

'encoding' => 'utf8', 

設置在app/config/database.php數據庫。

0

問題不在於該字符未被正確保存,而是您的phpmyadmin可能以另一種編碼(可能是latin1)顯示它,而不是它被保存爲。

您應該沒有問題以正確的編碼方式提取字符。

它可能不是一個真正的單引號,因爲這應該在latin1和utf-8編碼中很好地顯示出來。

將您的phpmyadmin更改爲不再顯示在latin1中(因爲您的角色不是latin1)後,也將您的表更新爲utf-8。否則,您可能會遇到麻煩:您的列現在假設您的文本是latin1(字符集latin1 collat​​e latin1_bin),但它包含utf-8數據。