mysql中查询中文乱码

只方法是为windows环境下

找到安装目录下面的my.ini文件

(1)将[mysql]下面的 default-character-set=latin1 修改为 default-character-set=utf8

(2)将[mysqld]下面的 character-set-server=latin1 修改为 character-set-server=utf8

 

设置好了后重启下mysql服务

 

虽然编码方式修改了,但是先前添加的中文依然查询出来为乱码,但是后添加的中文就正常了。

 

MySQL中执行模糊查询时,若涉及中文字符出现乱码问题,通常是由于字符集设置不当或SQL语句编写不规范导致的。以下是解决此类问题的详细方法: ### 1. 确保数据库、表和字段的字符集设置正确 MySQL中字符集的设置需要从服务器、数据库、表到字段逐层统一。推荐使用`utf8mb4`字符集以支持完整的中文字符(包括表情符号)。 ```sql -- 查看数据库字符集 SHOW VARIABLES LIKE 'character_set_database'; -- 查看数据表字符集 SHOW CREATE TABLE your_table; -- 修改数据库字符集 ALTER DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 修改数据表字符集 ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 上述操作确保了数据库和表使用`utf8mb4`字符集,这是支持中文字符的基础[^1]。 ### 2. 设置连接字符集 在客户端连接MySQL时,必须确保连接使用的字符集与数据库一致。可以在连接后执行以下语句: ```sql SET NAMES 'utf8mb4'; ``` 该语句将客户端连接的字符集设置为`utf8mb4`,确保传输过程中中文字符不会被错误转换。 ### 3. 在SQL语句中正确使用通配符和参数化查询 当使用`LIKE`进行模糊查询时,应避免直接拼接字符串,而应使用参数化查询方式,确保传入的中文参数不会因编码问题而被错误处理。 以MyBatis为例,正确的模糊查询语句应如下: ```xml <select id="selectStudentsLike" resultType="Student"> SELECT * FROM t_student WHERE name LIKE CONCAT('%', #{condition}, '%') </select> ``` 这种方式通过`CONCAT`函数拼接通配符,避免了直接在SQL中使用`%#{condition}%`可能导致的语法错误和乱码问题[^4]。 ### 4. 检查客户端和服务器端的字符集配置 MySQL服务器的默认字符集应在配置文件`my.cnf`或`my.ini`中明确设置: ```ini [client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 重启MySQL服务后,使用以下命令验证: ```sql SHOW VARIABLES LIKE 'character_set_%'; ``` 确保所有相关变量(如`character_set_client`、`character_set_connection`、`character_set_results`)均为`utf8mb4`[^1]。 ### 5. 使用`mysqldump`导出时指定字符集 如果涉及数据库迁移或备份恢复,应在导出时指定字符集以避免乱码: ```bash mysqldump -u root -p --default-character-set=utf8mb4 --set-charset=utf8mb4 database_name > backup.sql ``` 此命令确保导出的数据使用`utf8mb4`字符集,避免恢复时出现中文乱码[^2]。 ### 6. 验证查询结果 执行模糊查询后,检查返回结果是否正常显示中文。例如: ```sql SELECT * FROM t_student WHERE name LIKE '%张%'; ``` 若结果正常显示中文,则说明字符集和查询语句均配置正确。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值