2026-06-16 15:58:45
MySQL字符集和校验规则如下:
字符集: 服务器级别:通过character_set_server设置,可以在服务器启动时通过配置文件或运行时使用SET语句修改。 数据库级别:通过character_set_database设置,在创建或修改数据库时指定。 表级别:在创建或修改表时指定表的字符集,如果未指定,则使用数据库级别的字符集。 列级别:对于存储字符串的列,可以在创建或修改列定义时指定字符集,如果未指定,则使用表级别的字符集。
校验规则: MySQL支持多种校验规则,用于定义字符的比较和排序方式。 服务器、数据库、表和列级别:与字符集类似,校验规则也可以在服务器、数据库、表和列级别进行设置。 默认校验规则:每种字符集都有一种默认的校验规则,但也可以根据需要选择其他校验规则。例如,utf8_general_ci是一种通用的、不区分大小写的校验规则,适用于UTF8字符集。 后缀含义:校验规则名称的后缀表示该规则是否区分大小写、重音等。
注意事项: 在转换字符集时,需要确保转换后的字符集能够表示转换前列中存储的所有数据,否则会发生错误。 MySQL 8.0之前的默认字符集为latin1,utf8字符集实际指向的是utf8mb3。从MySQL 8.0开始,默认字符集改为utf8mb4,以避免乱码问题。 修改字符集和校验规则时,原库和原表的设定不会发生变化,修改只对新建的数据库和表生效。对于已有库和表,需要导出或删除数据后重新插入,以实现字符集的变更。