0

我正在一个网站上工作,我们将日文字符保存在文本字段中。

该表如下所示:

| contactlogs | CREATE TABLE `contactlogs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`contact_email` varchar(128) CHARACTER SET latin1 NOT NULL,
`name` varchar(128) CHARACTER SET latin1 DEFAULT NULL,
`company_name` varchar(128) CHARACTER SET latin1 DEFAULT NULL,
`email` varchar(128) CHARACTER SET latin1 DEFAULT NULL,
`telephone` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
`fax` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
`subject` text COLLATE utf8_unicode_ci NOT NULL,
`message` text COLLATE utf8_unicode_ci NOT NULL,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

当我检索已保存的数据时,消息字段通常被截断,末尾有一个垃圾字符(我假设是因为它可能没有保存最后一个字符的所有数据。

该网站本身在 cakephp 中。只需执行 $this->model->save($data) 即可保存数据(没有更改任何保存方式,模型本身为空)。没有特殊的数据库设置。只需设置主机、登录名、持久性 => 假、驱动程序 => mysql、数据库、前缀。

4

1 回答 1

0

您的数据库和表可能在 latin1默认排序规则下,因此如果没有'encoding' => 'utf8'在您的数据库配置中,蛋糕将与 latin1 中的数据库对话。将 UTF 转码为 latin1 并返回为数据丢失留下了空间。这不是蛋糕的问题。

因此,继续将连接更改为 UTF 以及数据库中的所有默认排序规则。新保存的数据会很好地显示,对于旧的数据将取决于它,我不会详细说明,因为它脱离了上下文。

于 2013-07-12T22:22:09.943 回答