Debian环境下MariaDB支持的字符集及配置说明
MariaDB继承了MySQL的字符集体系,支持多种语言和编码格式的字符集,涵盖西欧、中欧、东亚、中东等多个区域。通过SHOW CHARSET;
命令可查看MariaDB支持的全部字符集,常见字符集包括但不限于:
latin1
(cp1252 West European,默认字符集)、latin2
(ISO 8859-2 Central European)、latin5
(ISO 8859-9 Turkish)等;big5
(Big5 Traditional Chinese)、gbk
(GB2312 Simplified Chinese)、utf8
(UTF-8 Unicode,部分中文支持)、utf8mb4
(完整的UTF-8 Unicode,支持emoji和补充字符);koi8r
(KOI8-R Relcom Russian)、sjis
(Shift-JIS Japanese)、ujis
(EUC-JP Japanese)等。在Debian系统中,MariaDB的默认字符集通常为latin1
(对应latin1_swedish_ci
排序规则),但用户可根据需求修改为更通用的utf8mb4
(推荐)。修改默认字符集需编辑MariaDB配置文件(通常为/etc/mysql/my.cnf
或/etc/mysql/mariadb.conf.d/50-server.cnf
),在[mysqld]
、[client]
和[mysql]
section中添加以下配置:
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
修改完成后重启MariaDB服务使配置生效:sudo systemctl restart mariadb
。
MariaDB的字符集遵循层级继承原则,优先级从高到低依次为:
CREATE TABLE users (name VARCHAR(50) CHARACTER SET utf8mb4)
);CREATE TABLE users (...) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
);CREATE DATABASE mydb CHARACTER SET utf8mb4
);若未显式指定,字段会继承表的字符集,表继承数据库的字符集,数据库继承服务器的字符集。
为避免中文、emoji等特殊字符乱码,强烈建议将MariaDB的默认字符集设置为utf8mb4
(支持完整的Unicode字符集,包括4字节字符)。配置后需确保客户端连接时也使用utf8mb4
,例如通过PHP的PDO连接时可指定:$dsn = "mysql:host=localhost;dbname=mydb;charset=utf8mb4"
,或通过mysqli连接后执行$mysqli->set_charset("utf8mb4")
。