在 CentOS 系统中,MySQL 乱码问题通常是由于字符集设置不正确导致的。以下是一些建议和步骤来解决 MySQL 乱码问题:
打开 MySQL 的配置文件 my.cnf(或 my.ini),这个文件通常位于 /etc/mysql/ 或 /etc/ 目录下。在 [mysqld] 和 [client] 部分添加以下内容:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
这将设置服务器和客户端的默认字符集为 utf8mb4,并使用 utf8mb4_unicode_ci 排序规则。
保存配置文件后,重启 MySQL 服务以使更改生效:
sudo systemctl restart mysqld
或者
sudo service mysqld restart
如果已经存在数据库和表,需要将它们的字符集更改为 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");
或者在使用 PDO 连接时,可以在 DSN 中指定字符集:
$dsn = "mysql:host=localhost;dbname=your_database_name;charset=utf8mb4";
按照以上步骤操作后,MySQL 乱码问题应该得到解决。如果仍然存在问题,请检查应用程序代码中是否有硬编码的字符集设置,并确保它们与数据库的字符集设置一致。