在 Ubuntu 上使用 sqladmin(通常指 phpMyAdmin / SQLAdmin 或基于 Web 的数据库管理工具)显示乱码,常见原因和解决方法如下:
检查数据库和表:
SHOW VARIABLES LIKE 'character_set%';
SHOW CREATE TABLE your_table;
推荐设置:
utf8mb4utf8mb4_general_ci 或 utf8mb4_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;
header('Content-Type: text/html; charset=utf-8');
编辑:
/etc/phpmyadmin/config.inc.php
确保包含:
$cfg['DefaultCharset'] = 'utf-8';
编辑:
/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
PHP 示例:
$conn->set_charset("utf8mb4");
Python 示例:
conn = pymysql.connect(charset='utf8mb4')
locale
若不是 UTF-8:
sudo dpkg-reconfigure locales
选择 en_US.UTF-8 或 zh_CN.UTF-8
如果数据之前就用错误编码存了,单纯改配置无法恢复,需要:
如果你能告诉我:
我可以给你更精确的解决方案。