### 10.3.2 服务器字符集和排序规则 MySQL 服务器有一个服务器字符集和一个服务器排序规则。默认情况下,这些是`utf8mb4`和`utf8mb4_0900_ai_ci`,但它们可以在服务器启动时在命令行或选项文件中显式设置,并在运行时更改。 最初,服务器字符集和排序规则取决于您在启动时使用的选项[**mysqld**](mysqld.html).您可以使用[`--字符集服务器`](server-system-variables.html#sysvar_character_set_server)对于字符集。除此之外,您还可以添加[`--collat​​ion-server`](server-system-variables.html#sysvar_collation_server)为整理。如果不指定字符集,那和说的一样[`--character-set-server=utf8mb4`](server-system-variables.html#sysvar_character_set_server).如果您只指定一个字符集(例如,`utf8mb4`) 但不是排序规则,这和说的一样[`--character-set-server=utf8mb4`](server-system-variables.html#sysvar_character_set_server) [`--collat​​ion-server=utf8mb4_0900_ai_ci`](server-system-variables.html#sysvar_collation_server)因为`utf8mb4_0900_ai_ci`是默认排序规则`utf8mb4`.因此,以下三个命令都具有相同的效果: ``` mysqld mysqld --character-set-server=utf8mb4 mysqld --character-set-server=utf8mb4 \ --collation-server=utf8mb4_0900_ai_ci ``` 更改设置的一种方法是重新编译。要在从源构建时更改默认服务器字符集和排序规则,请使用[`DEFAULT_CHARSET`](source-configuration-options.html#option_cmake_default_charset)和[`DEFAULT_COLLATION`](source-configuration-options.html#option_cmake_default_collation)选项**制作**.例如: ``` cmake . -DDEFAULT_CHARSET=latin1 ``` 要么: ``` cmake . -DDEFAULT_CHARSET=latin1 \ -DDEFAULT_COLLATION=latin1_german1_ci ``` 两个都[**mysqld**](mysqld.html)和**制作**验证字符集/排序规则组合是否有效。如果没有,每个程序都会显示一条错误消息并终止。 如果未指定数据库字符集和排序规则,则使用服务器字符集和排序规则作为默认值[`创建数据库`](create-database.html)陈述。他们没有其他目的。 当前服务器字符集和排序规则可以从[`character_set_server`](server-system-variables.html#sysvar_character_set_server)和[`collat​​ion_server`](server-system-variables.html#sysvar_collation_server)系统变量。这些变量可以在运行时更改。