温馨提示×

ubuntu sqladmin为何显示乱码

小樊
38
2026-09-06 20:31:08
栏目: 云计算

在 Ubuntu 上使用 sqladmin(通常指 phpMyAdmin / SQLAdmin 或基于 Web 的数据库管理工具)显示乱码,常见原因和解决方法如下:


一、最常见原因:字符集不一致

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

检查数据库和表:

SHOW VARIABLES LIKE 'character_set%';
SHOW CREATE TABLE your_table;

推荐设置:

  • 数据库:utf8mb4
  • 表 / 字段:utf8mb4_general_ciutf8mb4_unicode_ci

修改示例:

ALTER DATABASE your_db CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

二、SQLAdmin / phpMyAdmin 页面编码问题

2. 浏览器未使用 UTF-8

  • 浏览器右键 → 编码 → 选择 UTF-8
  • 或强制设置:
header('Content-Type: text/html; charset=utf-8');

3. phpMyAdmin 配置问题

编辑:

/etc/phpmyadmin/config.inc.php

确保包含:

$cfg['DefaultCharset'] = 'utf-8';

三、MySQL 服务端配置问题(非常重要)

4. MySQL 配置文件字符集不对

编辑:

/etc/mysql/my.cnf
# 或
/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

四、连接层未指定编码(代码层)

5. 连接数据库时未设置 UTF-8

PHP 示例:

$conn->set_charset("utf8mb4");

Python 示例:

conn = pymysql.connect(charset='utf8mb4')

五、Ubuntu 系统语言环境

6. 系统 locale 不是 UTF-8

locale

若不是 UTF-8

sudo dpkg-reconfigure locales

选择 en_US.UTF-8zh_CN.UTF-8


六、已存数据是“双重编码”乱码(最难处理)

如果数据之前就用错误编码存了,单纯改配置无法恢复,需要:

  • 导出 → 转码 → 重新导入
  • 或手动修复数据

快速自检清单 ✅

  • [ ] 数据库字符集 = utf8mb4
  • [ ] 表字符集 = utf8mb4
  • [ ] MySQL 配置 = utf8mb4
  • [ ] 页面编码 = UTF-8
  • [ ] 连接字符集 = utf8mb4

如果你能告诉我:

  • 用的是 phpMyAdmin 还是 SQLAdmin
  • MySQL 还是 MariaDB
  • 乱码是 中文乱码 / 问号 / 方块

我可以给你更精确的解决方案。

0