修改默认字符集
遇到中文乱码,通常是因为客户端、连接层与服务端字符集不一致。作为资深开发,我们推荐以下两种方案。
1. 修改配置文件(永久生效)
最简单的方法是直接编辑 MySQL 的配置文件(Windows 下为 my.ini,Linux 下为 my.cnf)。在 [mysqld] 部分添加或修改如下参数:
[mysqld]
default-character-set = utf8
character-set-server = utf8
修改完成后记得重启 MySQL 服务才能生效。注意,现代 MySQL 版本更推荐使用 utf8mb4 以支持 Emoji 等特殊字符。
2. 运行时设置(临时生效)
如果无法重启服务,可以通过 SQL 命令动态调整当前会话的字符集。常用命令包括:
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;
SET collation_connection = utf8;
SET collation_database = utf8;
SET collation_server = utf8;
3. 为什么还是乱码?
很多时候设置了表的默认字符集为 utf8,但存入数据库依然是乱码。这通常是连接层的问题。在发送查询前,务必执行:
SET NAMES 'utf8';
这条指令相当于同时执行了三条底层命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
它确保了客户端发送的数据、服务器处理的数据以及返回给客户端的数据都使用统一的编码,从而避免乱码。

