在 Ubuntu 上解决 MySQL 乱码问题,通常需要关注以下几个方面:
确保系统语言设置正确:在 /etc/locale.gen
文件中取消注释(删除行首的 #
)所需的语言,然后运行 sudo locale-gen
生成相应的语言环境。
设置 MySQL 配置文件:编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
(或 /etc/mysql/my.cnf
),在 [mysqld]
部分添加以下内容:
[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_unicode_ci
这将设置 MySQL 的默认字符集为 utf8mb4
,默认排序规则为 utf8mb4_unicode_ci
。
重启 MySQL 服务:运行以下命令以应用更改:
sudo systemctl restart mysql
更改数据库和表的字符集:如果已经存在数据库和表,需要将它们的字符集更改为 utf8mb4
。可以使用以下 SQL 语句进行更改:
ALTER DATAbase your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;ALTER TABLE your_table_name ConVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
将 your_database_name
和 your_table_name
替换为实际的数据库和表名。
设置客户端连接字符集:在连接到 MySQL 时,确保客户端使用正确的字符集。例如,在 PHP 中,可以使用以下代码设置字符集:
mysqli_set_charset($connection, "utf8mb4");
对于其他编程语言或客户端工具,请参阅相应的文档以了解如何设置字符集。
遵循以上步骤应该可以解决 Ubuntu 上 MySQL 的乱码问题。如果问题仍然存在,请检查应用程序代码中是否有硬编码的字符集设置,并确保它们与数据库的字符集设置一致。