在 Linux 下使用 MariaDB 时,设置字符集(通常推荐 utf8mb4)主要涉及服务端配置、数据库/表级别以及客户端连接三部分。下面按常见场景说明。
编辑 MariaDB 配置文件(位置可能为以下之一):
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/mariadb.conf.d/50-server.cnf
在对应段落中添加或修改:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
如果是旧版本 MariaDB,也可用
utf8mb4_general_ci
systemctl restart mariadb
# 或
systemctl restart mysql
登录 MariaDB 后执行:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
期望看到:
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
ALTER DATABASE dbname
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
ALTER TABLE tablename
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE tablename
MODIFY column_name VARCHAR(255)
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql -u user -p --default-character-set=utf8mb4
SET NAMES utf8mb4;
jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8mb4
new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", $user, $pass);
utf8:最多 3 字节(不支持 emoji)utf8mb4:完整 UTF-8(推荐)检查:
如果你能告诉我:
我可以给你更精确的步骤。