对于sql,如果我只是使用表来存储拉丁文(或者更确切地说,只是英文)区分大小写的字符串,那么utf8\u bin和latin1\u general\u cs之间会有区别吗?
lmvvr0a81#
英文字符的编码与英文相同 latin1 以及 utf8 (以及大多数其他 CHARACTER SETs mysql支持)。所以英文文本在字符集之间的作用是相同的。两个 COLLATIONs 也一样。例如 A != a 无论哪种情况。回到问题上来。。。对于英语来说,没有区别。如果这就是你所拥有的一切,那就选一个吧。对于在欧洲发现的重音字母,编码( CHARACTER SET )是不同的。重音字母的顺序也不同。对于来自世界其他地方的角色--您将无法将它们存储在 latin1 ,但您可以将大部分存储在 utf8 . latin1_bin 还可以区分大小写。对于英语来说,它和英语是无法区分的 latin1_general_cs .mysql世界正在向 utf8mb4 .
latin1
utf8
CHARACTER SETs
COLLATIONs
A
a
CHARACTER SET
latin1_bin
latin1_general_cs
utf8mb4
xwmevbvl2#
如果要存储的字符可以用拉丁文1表示,那么可以存储哪些字符就没有什么区别了。你在这里特别要说的是校勘。当使用 latin1_general_cs 排序规则,这意味着列的字符集是 latin1 . 和校勘一样 utf8_bin 暗示一个字符集 utf8 .首先,您应该决定要使用的字符集,然后对于每个字符集,您可以选择几个排序规则。排序规则影响记录的排序和比较方式。 _bin 排序规则比较文本的原始二进制表示形式,即只有100%的值相等。其他排序规则,如 _general_cs 应用有语言意识的排序和比较规则(例如。 german 排序规则将排序和比较“ß" 与“s”接近 _cs 代表区分大小写。一 _ci 排序规则将不区分大小写,这意味着“foo”和“foo”比较起来相等。因此,根据您打算如何使用该列进行选择。
utf8_bin
_bin
_general_cs
german
_cs
_ci
2条答案
按热度按时间lmvvr0a81#
英文字符的编码与英文相同
latin1
以及utf8
(以及大多数其他CHARACTER SETs
mysql支持)。所以英文文本在字符集之间的作用是相同的。两个
COLLATIONs
也一样。例如A
!=a
无论哪种情况。回到问题上来。。。
对于英语来说,没有区别。如果这就是你所拥有的一切,那就选一个吧。
对于在欧洲发现的重音字母,编码(
CHARACTER SET
)是不同的。重音字母的顺序也不同。对于来自世界其他地方的角色--您将无法将它们存储在
latin1
,但您可以将大部分存储在utf8
.latin1_bin
还可以区分大小写。对于英语来说,它和英语是无法区分的latin1_general_cs
.mysql世界正在向
utf8mb4
.xwmevbvl2#
如果要存储的字符可以用拉丁文1表示,那么可以存储哪些字符就没有什么区别了。你在这里特别要说的是校勘。当使用
latin1_general_cs
排序规则,这意味着列的字符集是latin1
. 和校勘一样utf8_bin
暗示一个字符集utf8
.首先,您应该决定要使用的字符集,然后对于每个字符集,您可以选择几个排序规则。排序规则影响记录的排序和比较方式。
_bin
排序规则比较文本的原始二进制表示形式,即只有100%的值相等。其他排序规则,如_general_cs
应用有语言意识的排序和比较规则(例如。german
排序规则将排序和比较“ß" 与“s”接近_cs
代表区分大小写。一_ci
排序规则将不区分大小写,这意味着“foo”和“foo”比较起来相等。因此,根据您打算如何使用该列进行选择。