【问题标题】:phpmyadmin is saving ’ to mysql database instead of ' from cakephpphpmyadmin 正在将 ’ 保存到 mysql 数据库而不是 ' 从 cakephp
【发布时间】:2011-11-21 14:48:46
【问题描述】:

我正在从 cakephp 到 mysql 保存到数据库。当我使用 phpmyadmin 查看数据时,"driver's" 被保存为“驱动程序”。有没有办法将这些条目保存为正常的转义字符?我认为 cake 会在他们进入数据库之前处理这些问题。另外,如果我必须以这种方式保留它们,当我将它们从数据库中拉回时,我该如何取消它们?

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 后尝试的最新字符集。但实际上我只是在猜测字符集。

【问题讨论】:

  • 数据从何而来?
  • 查看这个问题和答案,为您找到潜在的解决方案:stackoverflow.com/questions/7662093/cakephp-mysql-insert-utf-8
  • 我的猜测是您用来验证数据是否正确保存的工具 (phpmyadmin) 使用的是 latin1 编码。把这个改成utf8,数据就会在phpmyadmin中渲染好了。
  • @stealthyninja 将'encoding' => 'utf8' 添加到app/config/database.php 数组中,从而解决了问题。谢谢你。如果你把它作为答案,我会接受它。
  • @Jim Joyce -- 酷;我现在有added it。谢谢。 :-)

标签: mysql cakephp cakephp-1.3


【解决方案1】:

取消注释

'encoding' => 'utf8',

app/config/database.php 中为您的数据库设置。

【讨论】:

    【解决方案2】:

    问题不在于该字符没有被很好地保存,而是您的 phpmyadmin 可能以另一种编码(可能是 latin1)设置而不是它被保存为。

    获取正确编码的字符应该没有问题。

    它可能也不是真正的单引号,因为它应该在 latin1 和 utf-8 编码中都能很好地显示出来。

    将您的 phpmyadmin 更改为不再以 latin1 显示(因为您的角色不是 latin1)后,还将您的表格更新为 utf-8。否则,您可能会遇到麻烦:您的专栏假定您的文本现在是 latin1(字符集 latin1 collat​​e latin1_bin),但它包含 utf-8 数据。

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多