10.2 MySQL 中的字符集和排序规则

MySQL Server 支持多种字符集。要显示可用的字符集,请使用INFORMATION_SCHEMA CHARACTER_SETStable 或显示字符集语句。以下是部分 Lists。有关更多完整信息,请参见第 10.10 节“支持的字符集和排序规则”

mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
...
| latin1   | cp1252 West European            | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European     | latin2_general_ci   |      1 |
...
| utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
| ucs2     | UCS-2 Unicode                   | ucs2_general_ci     |      2 |
...
| utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 |
...
| binary   | Binary pseudo charset           | binary              |      1 |
...

默认情况下,显示字符集语句显示所有可用字符集。它带有一个可选的LIKEWHERE子句,该子句指示要匹配的字符集名称。例如:

mysql> SHOW CHARACTER SET LIKE 'latin%';
+---------+-----------------------------+-------------------+--------+
| Charset | Description                 | Default collation | Maxlen |
+---------+-----------------------------+-------------------+--------+
| latin1  | cp1252 West European        | latin1_swedish_ci |      1 |
| latin2  | ISO 8859-2 Central European | latin2_general_ci |      1 |
| latin5  | ISO 8859-9 Turkish          | latin5_turkish_ci |      1 |
| latin7  | ISO 8859-13 Baltic          | latin7_general_ci |      1 |
+---------+-----------------------------+-------------------+--------+

给定的字符集始终至少具有一个排序规则,大多数字符集具有多个排序规则。要列出字符集的显示归类,请使用INFORMATION_SCHEMA COLLATIONStable 或SHOW COLLATION语句。

默认情况下,SHOW COLLATION语句显示所有可用的排序规则。它带有一个可选的LIKEWHERE子句,该子句指示要显示的排序规则名称。例如,要查看默认字符集latin1(cp1252 西欧)的归类,请使用以下语句:

mysql> SHOW COLLATION WHERE Charset = 'latin1';
+-------------------+---------+----+---------+----------+---------+
| Collation         | Charset | Id | Default | Compiled | Sortlen |
+-------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1  |  5 |         | Yes      |       1 |
| latin1_swedish_ci | latin1  |  8 | Yes     | Yes      |       1 |
| latin1_danish_ci  | latin1  | 15 |         | Yes      |       1 |
| latin1_german2_ci | latin1  | 31 |         | Yes      |       2 |
| latin1_bin        | latin1  | 47 |         | Yes      |       1 |
| latin1_general_ci | latin1  | 48 |         | Yes      |       1 |
| latin1_general_cs | latin1  | 49 |         | Yes      |       1 |
| latin1_spanish_ci | latin1  | 94 |         | Yes      |       1 |
+-------------------+---------+----+---------+----------+---------+

latin1归类具有以下含义。

CollationMeaning
latin1_bin根据latin1编码的二进制
latin1_danish_ciDanish/Norwegian
latin1_general_ci多语种(西欧)
latin1_general_cs多语言(ISO 西欧),区分大小写
latin1_german1_ci德国 DIN-1(字典 Sequences)
latin1_german2_ci德国 DIN-2(电话簿 Order)
latin1_spanish_ciModern Spanish
latin1_swedish_ciSwedish/Finnish

归类具有以下一般 Feature:

  • 两种不同的字符集不能具有相同的排序规则。

  • 每个字符集都有一个* default collation *。例如,latin1utf8的默认排序规则分别为latin1_swedish_ciutf8_general_ciINFORMATION_SCHEMA CHARACTER_SETStable 和显示字符集语句指示每个字符集的默认排序规则。 INFORMATION_SCHEMA COLLATIONStable 和SHOW COLLATION语句具有一列,该列指示每个排序规则是否为其字符集的默认字符集(如果是Yes,则为空)。

  • 归类名称以它们所关联的字符集的名称开头,通常后跟一个或多个后缀,以 table 示其他归类 Feature。有关命名约定的其他信息,请参见第 10.3.1 节“排序规则命名约定”

当一个字符集具有多个排序规则时,可能不清楚哪种排序规则最适合给定的应用程序。为避免选择不合适的排序规则,请对代 table 性数据值进行一些比较,以确保给定的排序规则以期望的方式对值进行排序。