温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis为啥乱码

发布时间:2026-10-13 20:29:36 来源:亿速云 阅读:110 作者:小樊 栏目:编程语言

在 Java + MyBatis 项目中出现“乱码”,通常不是 MyBatis 本身的问题,而是字符编码在某一环节不一致导致的。下面按常见原因 → 解决方案给你梳理一下。


一、最常见原因汇总

1️⃣ 数据库 & 表编码不一致(最常见)

现象:插入中文正常,查询出来是 ??? 或 中文

✅ 检查 MySQL 编码:

SHOW VARIABLES LIKE 'character_set%';
SHOW CREATE TABLE your_table;

✅ 正确配置(推荐):

  • 数据库:utf8mb4
  • 表 / 字段:utf8mb4
  • 连接串指定编码

2️⃣ JDBC 连接未指定编码(非常常见)

错误示例:

jdbc:mysql://localhost:3306/test

✅ 正确写法(重点):

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

⚠️ 如果是 MySQL 8.x,建议用 utf8mb4


3️⃣ MyBatis 映射文件 / XML 文件编码问题

现象:SQL 里写中文,执行就乱码

✅ 解决:

  • IDEA:
    File → Settings → Editor → File Encodings
    全部设为 UTF-8
  • Mapper XML 文件头部:
<?xml version="1.0" encoding="UTF-8" ?>

4️⃣ 控制台 / 日志输出乱码(不是数据乱码)

现象:数据库里正常,控制台是乱码

✅ 解决:

  • IDEA VM 参数:
-Dfile.encoding=UTF-8
  • Tomcat(如果是 Web):
-Dfile.encoding=UTF-8

5️⃣ 前端 → 后端 → 数据库 编码不一致(Web 项目)

典型链路:

浏览器(UTF-8) → Controller → Service → MyBatis → MySQL

✅ 检查点:

  • Spring MVC:
@RequestMapping(value = "/test", produces = "application/json;charset=UTF-8")
  • Spring Boot:
spring:
  http:
    encoding:
      charset: UTF-8
      enabled: true
      force: true

6️⃣ MyBatis 参数类型问题(少见但存在)

错误示例:

#{name}

但 Java 里传的是 byte[] 或 String 编码被转过

✅ 建议:

  • 参数直接用 String
  • 不要手动 getBytes("ISO-8859-1")

二、快速排查顺序(推荐)

  1. ✅ 数据库编码(utf8mb4)
  2. ✅ JDBC URL 编码
  3. ✅ Mapper XML 文件编码
  4. ✅ IDE / 控制台编码
  5. ✅ 前后端编码统一

三、如果你愿意,可以直接贴:

  • 数据库类型(MySQL / Oracle?)
  • JDBC 连接串(脱敏)
  • 乱码场景(插入 / 查询 / 控制台)
  • MyBatis 版本

我可以直接帮你精准定位是哪一步出问题。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手