utf8\u bin和latin1\u general\u cs有什么区别

vhmi4jdf  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(494)

对于sql,如果我只是使用表来存储拉丁文(或者更确切地说,只是英文)区分大小写的字符串,那么utf8\u bin和latin1\u general\u cs之间会有区别吗?

lmvvr0a8

lmvvr0a81#

英文字符的编码与英文相同 latin1 以及 utf8 (以及大多数其他 CHARACTER SETs mysql支持)。所以英文文本在字符集之间的作用是相同的。
两个 COLLATIONs 也一样。例如 A != a 无论哪种情况。
回到问题上来。。。
对于英语来说,没有区别。如果这就是你所拥有的一切,那就选一个吧。
对于在欧洲发现的重音字母,编码( CHARACTER SET )是不同的。重音字母的顺序也不同。
对于来自世界其他地方的角色--您将无法将它们存储在 latin1 ,但您可以将大部分存储在 utf8 . latin1_bin 还可以区分大小写。对于英语来说,它和英语是无法区分的 latin1_general_cs .
mysql世界正在向 utf8mb4 .

xwmevbvl

xwmevbvl2#

如果要存储的字符可以用拉丁文1表示,那么可以存储哪些字符就没有什么区别了。你在这里特别要说的是校勘。当使用 latin1_general_cs 排序规则,这意味着列的字符集是 latin1 . 和校勘一样 utf8_bin 暗示一个字符集 utf8 .
首先,您应该决定要使用的字符集,然后对于每个字符集,您可以选择几个排序规则。排序规则影响记录的排序和比较方式。 _bin 排序规则比较文本的原始二进制表示形式,即只有100%的值相等。其他排序规则,如 _general_cs 应用有语言意识的排序和比较规则(例如。 german 排序规则将排序和比较“ß" 与“s”接近 _cs 代表区分大小写。一 _ci 排序规则将不区分大小写,这意味着“foo”和“foo”比较起来相等。
因此,根据您打算如何使用该列进行选择。

相关问题