数据库整理差异UTF?拉丁?等等。?

时间:2010-08-07 06:40:33

标签: mysql database database-design collation

数据库的排序规则是什么用途?对于HTML UTF-8,我知道一点,比如显示其他语言类型。但是对于数据库呢?我正在使用latin-1(默认),我的朋友告诉我使用UTF代替。当我问为什么时,他们不知道并说其他人使用它。所以我在质疑校对真正做了什么?它会影响速度或类似的东西吗?

5 个答案:

答案 0 :(得分:9)

MySQL通过在字符编码后命名的排序规则来混淆问题。它们是不同的概念。

collation确定关系运算符(<>等)和ORDER BY子句如何排序字符串。整理所考虑的问题是:

  • 大写和小写字母是否相同?
  • 空白是否显着?
  • 重音字母排序等同于非重音版本,在非重音版本之后,还是在最后?
  • 像“ch”和“ll”这样的有向图是否像单独的字母一样排序?
  • 像AᴬⒶA这样的Unicode兼容性是否与之相同?

其中一些取决于语言。

A character encoding确定如何将文本值转换为字节序列和从字节序列转换。有关详细介绍,请参阅The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

有数百种不同的字符编码,大多数特定于操作系统和语言环境的某种组合。它们中的大多数是US-ASCII的超集,所以如果确定你的数据将仅仅是ASCII,那么你使用的编码无关紧要

但是如果你需要其他字符,你需要一个可以处理它们的编码。对于西方语言,您的选择通常是:

两者之间的区别是:

  • 对于西欧重音字符,UTF-8需要2个字节,而Latin-1只需要1个字节。
  • 但其他角色根本无法用Latin-1表示。 UTF-8可以表示每个可能的Unicode字符。

答案 1 :(得分:3)

我认为你混淆了 charset 整理这个词

http://dev.mysql.com/doc/refman/5.0/en/charset-general.html

字符集是一组符号和编码。 排序规则是一组用于比较字符集中字符的规则。

latin1和utf8是MySQL中的有效字符集,而latin1_swedish_ci和utf8_general_ci是示例排序规则。

答案 2 :(得分:1)

关于整理的

See this on Answers。关于字符集和代码页,请参阅维基百科。仅供参考latin1适用于英语和西欧国家。 UTF-8适用于可能包含例如中文或阿拉伯文字的通用应用程序。

答案 3 :(得分:1)

数据库排序规则控制字符串的比较/排序方式 - 以及较低级别如何解释存储的字符数据。 Latin-1将允许存储/比较latin-1代码页中的字符串。如果你需要处理,例如日语文本然后UTF-8是一个更好的选择。

答案 4 :(得分:-1)

严格地说,数据库整理将影响字符数据的排序。使用UTF-8的原因是因为你要存储UTF-8数据。