utf8mb4_unicode_ci与utf8mb4_bin
因此,首先让我们看看我是否做对了:
字符集是一组符号和编码。排序规则是一组用于比较字符集中字符的规则。
我应该使用utf8mb4,因为mysql utf8是一个欺诈,最多3个字节,而不是PHP中真正的4字节真正的utf8字符集。
因此,utf8mb4 是一个字符集,utf8mb4_unicode_ci/utf8mb4_bin是他许多不同的可用排序规则中的 2 个。
utf8_unicode_ci做不区分大小写的比较和其他特殊比较(例如,我听说它与法语中的所有口音都搞砸了)。utf8_bin区分大小写,因为它比较字符的二进制值。
现在的问题是:
-
例如,如果我想允许使用区分大小写的登录名utf8mb4_unicode_ci我将不得不做这样的事情:
SELECT name FROM table WHERE BINARY name = 'MyNaMEiSFUlloFUPPERCases';
-
例如,如果我想允许使用utf8mb4_bin进行不区分大小写的搜索,我将不得不做这样的事情:
SELECT name FROM table WHERE LOWER(name) LIKE '%myname%'
那么哪一个更好?我听到的关于utf8_unicode_ci口音/其他特殊字符的坏事怎么办?
谢谢:)