是否可以使用默认排序规则(latin_swedish_ci)?

时间:2016-06-09 01:57:17

标签: mysql collation

我搜索了一些仅表明他们从latin转换为utf8的意见,请问我是否可以使用latin_swedish_ci?它与英国人没有区别,所以可以吗?另外,如果我在我的网络应用上有meta-charset UTF-8并且我正在使用latin_swedish_ci collation,它会影响什么?我想要你的意见。

2 个答案:

答案 0 :(得分:3)

我强烈建议您使用utf8mb4代替latin_swedish_ci甚至utf8

即使latin_swedish_ci支持所有英文字母,它也可以并且最终会帮助你。例如,名称,地址和更多东西可以包含其他字符,这可能会弄乱您的存储数据,甚至更糟糕的可能会产生明显的错误!

那么为什么不只是utf8你会问?因为在MySQL utf8中使用3个字节来存储一个字符并且不能存储每个utf-8字符,所以你需要4个字节,因此你需要utf8mb4。如果您必须处理用户条目,并且移动用户决定将一些fance表情符号作为条目输入,这可能会让您陷入困境。好几次都和我在一起。

不要问我为什么MySQL以这种方式弄乱了整个unicode的东西,我不知道......也许是latin_swedish_ci默认的原因。

一般情况下,使用完整的unicode来处理与文本相关的所有内容,您就是安全的。 Web是巨大的,国际化和存储以保持一些额外的字节足够便宜。现在就习惯了,即使你真的不需要它,你将为未来做好准备。

在这种情况下相信我。我对这种问题毫无准备,并且必须通过艰难的方式学习这一点;)

我知道这个问题有点陈旧,但我将在未来为所有其他人留下这个答案。

答案 1 :(得分:2)

CHARACTER SET指的是字符编码的方式。 COLLATION指的是比较字符的方式(对于相等或排序)。对于每个字符集,都有一个可能的排序规则列表。 (西班牙语和德语有一些显着的变化。)

两个字符集latin1utf8对英文文本进行相同的编码。所以,如果你只使用英语,那么CHARACTER SET并不重要。即使是这两个字符集的默认排序规则对英语也是如此。

如果你使用其他语言甚至是表情符号,那么提出的问题就变得很重要了。

应用程序客户端和MySQL服务器通常可以使用不同的字符集。转换将自动进行。 但是,你必须告诉MySQL应用程序字节使用的字符集。 (同样,对于英语,这并不重要。)这可以通过多种方式完成,具体取决于客户端(Java,PHP,VB,Python等)。