温馨提示×

ubuntu sqladmin为何乱码

小樊
44
2026-10-12 13:46:28
栏目: 云计算

在 Ubuntu 上使用 sqladmin(通常指 phpMyAdmin / SQL 管理工具,或某个 SQL Admin 客户端)出现乱码,一般是字符集(编码)不一致导致的。下面按常见原因和解决方法说明。


一、最常见原因

1️⃣ 数据库 / 表字符集不是 UTF-8

如果数据库或表使用的是 latin1,而页面用 UTF-8 显示,就会乱码。

检查:

SHOW CREATE DATABASE your_db;
SHOW CREATE TABLE your_table;

解决:

ALTER DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2️⃣ 连接字符集未设置(非常重要)

即使数据库是 UTF-8,连接没设置也会乱码。

在 SQL 中执行:

SET NAMES utf8mb4;

或在连接代码里(如 PHP):

$conn->set_charset("utf8mb4");

3️⃣ phpMyAdmin / sqladmin 页面编码不对

浏览器或工具本身用了错误编码。

解决:

  • 浏览器 → 右键 → 编码 → 选 UTF-8
  • phpMyAdmin:
    // config.inc.php
    $cfg['DefaultCharset'] = 'utf8mb4';
    

二、Ubuntu 系统层面问题

4️⃣ 系统 locale 不是 UTF-8

locale

如果不是 UTF-8:

sudo apt install locales
sudo dpkg-reconfigure locales
# 选择 en_US.UTF-8 或 zh_CN.UTF-8

三、MySQL / MariaDB 配置问题

5️⃣ MySQL 配置文件未统一字符集

编辑:

sudo nano /etc/mysql/my.cnf
# 或
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

加入:

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

重启:

sudo systemctl restart mysql

四、已经乱码的数据还能救吗?

如果数据写入时就已经乱码,通常无法完美恢复。
如果是显示乱码但数据正确,按上面方法改编码即可。


五、快速自检清单 ✅

  • [ ] 数据库字符集 utf8mb4
  • [ ] 表字符集 utf8mb4
  • [ ] 连接用 SET NAMES utf8mb4
  • [ ] 页面编码 UTF-8
  • [ ] Ubuntu locale UTF-8

如果你能告诉我:

  • 用的是 phpMyAdmin / Adminer / 其他 sqladmin
  • MySQL 还是 MariaDB
  • 中文还是其他语言乱码

我可以给你更精准的一步到位方案。

0 踩