我的系統處理西班牙語數據。我正在使用laravel + mysql。我的數據庫歸類爲LATIN1 - 默認排序規則和我的表結構看起來是這樣的:PHP + MySQL +西班牙語
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) CHARACTER SET latin1 NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=298 DEFAULT CHARSET=utf8mb4;
有幾個問題:
我從文件加載數據到數據庫中。插入到數據庫之前, utf8_encode($ name)是否是一個好習慣?目前我正在這樣做,否則 一些比較拋出錯誤:
SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation '='
如果使用函數utf8_encode是要走的路,我是否需要函數utf8_encode連名字我要搜索?即select ... where name = utf8_encoded(name)?
是否有任何缺陷或更好的方式來處理上述?當我第一次做西班牙語(帶有口音的字符)時。
我的印象是'VARCHAR's在MySQL是UTF8默認情況下,這樣你就不會想到要使用'utf8_encode'時使用它們。 –
@MartinParkin更新了我在插入數據時沒有使用utf8編碼的錯誤。然後選擇使用=過濾器。 – aiiwa