| 1. mysql collation的命名規則:它們以其相關(guān)的字符集名開(kāi)始,通常包括一個(gè)語(yǔ)言名,并且以_ci(大小寫(xiě)不敏感)、_cs(大小寫(xiě)敏感)或_bin(二元)結束。比如latin1字符集有以下幾種校正規則: 校對規則 含義 如果指定了CHARACTER SET X和COLLATE Y,那么采用CHARACTER SET X和COLLATE Y;如果指定了CHARACTER SET X而沒(méi)有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默認校對規則。否則,采用服務(wù)器字符集和服務(wù)器校對規則。 3. 而我們在建表的時(shí)候只指定了character set,所以它永遠是采用對應的默認的校對規則。沒(méi)必要重建表格,只需要alter table mytable CONVERT TO CHARACTER SET latin1 COLLATE latin1_bin這樣轉換即可。 4. 建議collation都盡量采用字符集相應的bin類(lèi)型的校對規則,這樣不容易出錯。 5. collation引起的問(wèn)題。 一張test的表,字符集采用的latin1。 select to_id from test where to_id='cn象_王';
(root@im_offlog1a)[test]> select hex('cn陶_陶'); (root@im_offlog1a)[test]> select hex('cn象_王'); 編碼的確是不一樣的,但是為什么mysql會(huì )認為這兩條記錄是一樣的呢?── collation引起的問(wèn)題。 參考: http://blog.csdn.net/xfsnow/archive/2008/09/05/2885948.aspx http://www.bizeway.net/read.php/325.htm |
聯(lián)系客服