在 Java + MyBatis 项目中出现“乱码”,通常不是 MyBatis 本身的问题,而是字符编码在某一环节不一致导致的。下面按常见原因 → 解决方案给你梳理一下。
现象:插入中文正常,查询出来是 ??? 或 䏿–‡
✅ 检查 MySQL 编码:
SHOW VARIABLES LIKE 'character_set%';
SHOW CREATE TABLE your_table;
✅ 正确配置(推荐):
utf8mb4utf8mb4错误示例:
jdbc:mysql://localhost:3306/test
✅ 正确写法(重点):
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
⚠️ 如果是 MySQL 8.x,建议用
utf8mb4
现象:SQL 里写中文,执行就乱码
✅ 解决:
File → Settings → Editor → File Encodings<?xml version="1.0" encoding="UTF-8" ?>
现象:数据库里正常,控制台是乱码
✅ 解决:
-Dfile.encoding=UTF-8
-Dfile.encoding=UTF-8
典型链路:
浏览器(UTF-8) → Controller → Service → MyBatis → MySQL
✅ 检查点:
@RequestMapping(value = "/test", produces = "application/json;charset=UTF-8")
spring:
http:
encoding:
charset: UTF-8
enabled: true
force: true
错误示例:
#{name}
但 Java 里传的是 byte[] 或 String 编码被转过
✅ 建议:
StringgetBytes("ISO-8859-1")我可以直接帮你精准定位是哪一步出问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。