温馨提示×

ubuntu sqladmin怎么解决乱码

小樊
46
2026-07-11 01:37:24
栏目: 云计算

在 Ubuntu 下使用 sqladmin(通常指 phpMyAdmin / Adminer / 或数据库管理工具)出现乱码,一般是字符集不一致导致的。下面按常见场景给你一套排查和解决方案。


一、先确认乱码类型

常见表现:

  • 中文变成 ?字符集设置错误
  • 中文变成 å 之类 → UTF-8 被当成 Latin1
  • 页面本身乱码 → HTTP 头字符集问题

二、数据库层面(最常见原因)

1️⃣ 查看数据库字符集

SHOW 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

如果不是,继续看下面。


2️⃣ 修改 MySQL / MariaDB 字符集(永久生效)

编辑配置文件:

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

三、phpMyAdmin 乱码解决方案

1️⃣ 设置 phpMyAdmin 字符集

编辑:

sudo nano /etc/phpmyadmin/config.inc.php

添加:

$cfg['DefaultCharset'] = 'utf8mb4';

2️⃣ PHP 文件本身编码

确认 phpMyAdmin 文件是 UTF-8 无 BOM


四、网页 / 浏览器乱码

1️⃣ 页面字符集

在浏览器中查看:

右键 → 检查 → Network → 响应头

应有:

Content-Type: text/html; charset=utf-8

如果没有,在 Apache / Nginx 中设置。


2️⃣ Apache

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;

七、快速自检清单 ✅

  • [ ] 数据库字符集是 utf8mb4
  • [ ] 表字符集是 utf8mb4
  • [ ] phpMyAdmin 设置 utf8mb4
  • [ ] 页面返回 charset=utf-8
  • [ ] 终端 / SSH 支持 UTF-8

如果你能告诉我:

  • ✅ 用的是 phpMyAdmin / Adminer / 命令行
  • ✅ MySQL 还是 MariaDB
  • ✅ 乱码具体样子(截图或文字)

我可以给你精确到命令级别的解决方案。

0