0
我正在一個網站中保存日文字符在文本字段中。當在mysql中保存文本字段時截斷Utf8字符
表看起來是這樣的:
| 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)(沒有改變任何關於它的方式模型本身是空的)沒有特殊的數據庫設置,只需設置host,login,persistent => false,driver => mysql,數據庫,前綴
'CHARACTER SET latin1' ...從什麼時候開始是'latin1'的日語部分? –
這些拉丁文的行並不意味着要存儲日文字符。只有那些整理了utf8_unicode_ci的字段是。是的,我知道它可能看起來應該是utf8,但是它是針對預先存在的網站的,我想盡可能避免更改數據庫設置。 (雖然我完全不相信可以在不這樣做的情況下修復此錯誤) – Kai
您可能需要在[配置](http://book.cakephp)中將數據庫連接的編碼設置爲utf8 .ORG/2.0/EN /開發/ configuration.html)。默認通常是latin1。 – mata