在 Debian 上修复 MySQL 乱码(中文乱码),通常要从 字符集配置、数据库/表字符集、客户端连接字符集 三方面入手。下面按「最常见 → 进阶」顺序说明。
登录 MySQL 后执行:
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
重点关注:
character_set_servercharacter_set_databasecharacter_set_clientcharacter_set_connection如果看到 latin1,基本就是乱码根源。
sudo nano /etc/mysql/my.cnf
或(MariaDB / 新版本 MySQL):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
保存后重启 MySQL:
sudo systemctl restart mysql
ALTER DATABASE 数据库名
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE 表名
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
即使服务端是对的,连接时也要指定字符集。
mysql -u root -p --default-character-set=utf8mb4
PHP (PDO)
$pdo = new PDO(
"mysql:host=localhost;dbname=test;charset=utf8mb4",
$user, $pass
);
Python
import pymysql
pymysql.connect(
host='localhost',
user='root',
password='',
database='test',
charset='utf8mb4'
)
如果是 终端显示乱码:
locale
若不是 UTF-8:
sudo apt install locales
sudo dpkg-reconfigure locales
选 en_US.UTF-8 或 zh_CN.UTF-8
✅ 服务端:utf8mb4
✅ 数据库 / 表:utf8mb4
✅ 连接:指定 utf8mb4
✅ 终端:UTF-8
如果你愿意,可以告诉我:
mysql -V)我可以给你精确修复命令。