MySQL排序规则utf8_unicode_ci与utf8_general_ci的区别

某天,你无端想起一个人,她曾让你对明天有所期许,但是却完全没有出现在你的明天里。

概括

MySQL支持30多种字符集的70多种 校对规则。字符集和它们的默认校对规则可以通过SHOW CHARACTER SET语句显示;
ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做一样的;
bin 是二进制, a 和 A 会别区别对待.
例如你运行:

1
SELECT * FROM table WHERE txt = 'a'

那么在utf8_bin中你就找不到 txt = ‘A’ 的那一行, 而 utf8_general_ci 则可以.
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

一句话

对与general来说 ß = s 是为true的,但是对于unicode来说 ß = ss 才是为true的,其实他们的差别主要在德语和法语上,所以对于我们中国人来说,一般使用general,因为general更快,如果你对德语和法语的对比有更高的要求,才使用unicode,它比general更准确一些(按照德语和法语的标准来说,在对比或者排序上更准确)
utf8_unicode_ci比较准确,utf8_general_ci速度比较快。