MySQL数据库编码格式介绍 建站网 默认分类 2019-09-23 utf8mb4 已成为 MySQL 8.0 的默认字符集,在MySQL 8.0.1及更高版本中将 utf8mb4_0900_ai_ci 作为默认排序规则。 utf8mb4_0900_ai_ci,属于utf8mb4_unicode_ci中的一种,具体含义如下: - uft8mb4 表示用 UTF-8 编码方案,每个字符最多占4个字节。 - 0900 指的是 Unicode 校对算法版本。(Unicode归类算法是用于比较符合Unicode标准要求的两个Unicode字符串的方法)。 - ai指的是口音不敏感。也就是说,排序时e,è,é,ê和ë之间没有区别。 - ci表示不区分大小写。也就是说,排序时p和P之间没有区别。 由于utf8mb4_0900_ai_ci排序规则现在是默认排序规则,因此默认情况下新表格可以存储基本多语言平面之外的字符,现在可以默认存储表情符号。如果需要重音灵敏度和区分大小写,则可以使用utf8mb4_0900_as_cs代替。 ###修改数据库编码 ``` alter database <数据库名> character set utf8; ``` ###查看数据库表编码 ``` show create table <表名>; ``` ###修改数据库表编码 ``` alter table <表名> character set utf8; ``` ###MySQL中字符集相关变量 character_set_client:客户端请求数据的字符集 character_set_connection:从客户端接收到数据,然后传输的字符集 character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server指定的字符集,这个变量建议由系统自己管理,不要人为定义。 character_set_filesystem:把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的 character_set_results:结果集的字符集 character_set_server:数据库服务器的默认字符集 character_set_system:存储系统元数据的字符集,总是 utf8,不需要设置 ###MySQL8.0查看和参考 ``` mysql> show variables like "%char%"; +--------------------------------------+--------------------------------+ | Variable_name | Value | +--------------------------------------+--------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | | validate_password.special_char_count | 1 | +--------------------------------------+--------------------------------+ 9 rows in set (0.01 sec) ``` ###MySQL5.7查看和参考 ``` mysql> show variables like "%char%"; +--------------------------------------+----------------------------+ | Variable_name | Value | +--------------------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | validate_password_special_char_count | 1 | +--------------------------------------+----------------------------+ 9 rows in set (0.02 sec) ``` ###MySQL5.7配置文件参考 ``` [client] default-character-set=utf8 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid ``` ####参考文献 [MySQL编码介绍][1] [1]: https://blog.csdn.net/kikajack/article/details/84668924 本文由 建站网 撰写创作,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。