在 Ubuntu 下使用 sqladmin(通常指 phpMyAdmin / Adminer / 或数据库管理工具)出现乱码,一般是字符集不一致导致的。下面按常见场景给你一套排查和解决方案。
常见表现:
? → 字符集设置错误å 之类 → UTF-8 被当成 Latin1SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
推荐结果:
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_results utf8mb4
character_set_server utf8mb4
如果不是,继续看下面。
编辑配置文件:
sudo nano /etc/mysql/my.cnf
或(Ubuntu 常见):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加或修改:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
重启 MySQL:
sudo systemctl restart mysql
编辑:
sudo nano /etc/phpmyadmin/config.inc.php
添加:
$cfg['DefaultCharset'] = 'utf8mb4';
确认 phpMyAdmin 文件是 UTF-8 无 BOM
在浏览器中查看:
右键 → 检查 → Network → 响应头
应有:
Content-Type: text/html; charset=utf-8
如果没有,在 Apache / Nginx 中设置。
sudo nano /etc/apache2/conf-available/charset.conf
取消注释:
AddDefaultCharset UTF-8
重启:
sudo systemctl restart apache2
⚠️ 字符集改了,旧数据不会自动修复
ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
SET NAMES utf8mb4;
utf8mb4utf8mb4utf8mb4charset=utf-8如果你能告诉我:
我可以给你精确到命令级别的解决方案。