分页: 1 / 1

mariadb 将 character_set_client 从 latin1 修改为 utf8mb4

发表于 : 2024年 1月 17日 16:09
BobMaster
以前没有注意到这个问题,直到在debian12上新装的mariadb-server上导入数据库后发现中文出现了乱码,前后也检查过了数据库的字符集,没发现问题

代码: 全选

SHOW CREATE DATABASE database_name;
使用下面的指令得到

代码: 全选

SHOW VARIABLES LIKE 'character_set_client';

代码: 全选

MariaDB [nextcloud]> SHOW VARIABLES LIKE 'character_set_client';
+----------------------+--------+
| Variable_name        | Value  |
+----------------------+--------+
| character_set_client | latin1 |
+----------------------+--------+
1 row in set (0.001 sec)
这也难怪中文字符会乱码,编辑 /etc/mysql/mariadb.conf.d/50-client.cnf,在 [client] 字段下添加

代码: 全选

default-character-set=utf8mb4
即可解决
重新进mariadb shell,可以看到修改生效了

代码: 全选

MariaDB [(none)]> SHOW VARIABLES LIKE 'character_set_client';
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| character_set_client | utf8mb4 |
+----------------------+---------+
1 row in set (0.001 sec)
Reference: Change MySQL default character set to UTF-8 in my.cnf?

Re: mariadb 将 character_set_client 从 latin1 修改为 utf8mb4

发表于 : 2024年 1月 17日 17:21
ejsoon
某些格式,中文不是亂碼,但表情符號會變成??。如果不及時發現,就會丢失所有表情數據。