2011-11-21 58 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数据。