9.1.1. Character Sets and Collations in General
character set(字符集)是一组符号和编码。collation(连线校对)是一套比较字符的字符集的规则。用一个假设的字符集例子,让我们明确他们的区别。
假设我们有一个字母表,有四个字母: “ A ”, “ B ”, “ a ” , “ b ”。我们用数字给每个字母编码: “A” = 0 ,“ B” = 1 ,“a” = 2 ,“b” = 3 。字母“ A ”是一个符号,数字0“ A ” 的编码 ,这四个字母及这四个编码就是一个字符集。
假如我们想要比较两个字符串“A”和“B”的值。那么最简单的方法就是查看他们的编码:“A”的编码为0,“B”的编码为1,因为0小于1,所以我们说“A”小于“B”。这是在字符集的比较(连线校对)的应用。比较(连线校对)是一套规则(这个例子里只有一个规则,那就是比较编码)。我们称这种最简单的校对为二进制校对(binary collation)。
但如果我想说大小写是相等的呢?那我们应该这样做:(1)把小写的“a”和“b”等同于“A”和“B”,(2)然后比较它们的编码。我们称这是大小写不敏感校对(case-insensitive collation)。这比二进制校对稍麻烦一些。
在现实生活中,多数的字符集有许多的字符:。上千种西方书写字符构成的字符系统中,除了特殊的符号和标点符号,还有多种字母表。这不仅仅是“A”和“B”,而是整个字母表。同时在现实生活中,多数的校对有很多规则,不仅仅是是否对大小写敏感。还要区分不同的口音(例如德语的“Ö”,要关联到相同的口音。在两种德语校对规则中,其中一种就认为在多字符映射中“Ö” = “OE” )。
MySQL可以让你做这些事情:
用多种的字符集(character sets)存储字符串
用多种的校对(collations)规则比较字符串
对同一个服务器,同一个数据库,甚至是同一个表中的一个字符串,可以用不同的文字校对或字符集。
在任一个水平上,允许特定的字符集和校对设置。
在这些方面, MySQL是远远超过其他大多数数据库管理系统。然而,为了有效地使用这些功能,您需要知道什么字符集和校对的情况下,如何更改默认值,以及它们如何影响字符串的操作和函数。
出自:http://dev.mysql.com/doc/refman/5.0/en/charset-general.html