温馨提示×

温馨提示×

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

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

java tomcat为什么乱码了

发布时间:2026-09-02 07:30:55 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java + Tomcat 环境下出现乱码,根本原因通常是字符编码不一致。下面按常见场景给你系统梳理一下原因和解决办法。


一、常见乱码场景与原因

1️⃣ HTTP 请求参数乱码(GET / POST)

表现:

  • 页面提交中文,后台 request.getParameter() 拿到的是 ??? 或 中文

原因:

  • Tomcat 默认使用 ISO-8859-1 解码请求参数
  • 前端是 UTF-8,后端用 ISO 解码 → 乱码

✅ 解决方案

POST 请求:

request.setCharacterEncoding("UTF-8");

⚠️ 必须在 getParameter() 之前调用

GET 请求(Tomcat 8 以下): 在 conf/server.xml 中:

<Connector port="8080" protocol="HTTP/1.1"
           URIEncoding="UTF-8" />

Tomcat 8+ 默认已是 UTF-8


2️⃣ 响应页面乱码(浏览器显示乱码)

表现:

  • 页面中文显示成乱码
  • 控制台输出正常

原因:

  • 响应未指定编码
  • 浏览器按错误编码解析

✅ 解决方案

response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");

JSP 中:

<%@ page contentType="text/html;charset=UTF-8" %>

3️⃣ IDE(Eclipse / IntelliJ)文件编码不一致

原因:

  • Java 文件本身是 GBK
  • 项目配置是 UTF-8

✅ 解决

  • 统一设置为 UTF-8
  • IntelliJ:File → Settings → File Encodings
  • Eclipse:Window → Preferences → General → Workspace

4️⃣ 数据库乱码

表现:

  • 存进去是乱码
  • 读出来也是乱码

✅ 检查点

  • 数据库编码:utf8mb4
  • 表、字段编码一致
  • JDBC URL:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8

5️⃣ 日志 / 控制台乱码

原因:

  • Tomcat 启动编码 ≠ 系统编码

✅ 解决 catalina.bat / catalina.sh:

-Dfile.encoding=UTF-8

二、一句话总结(记住这个)

乱码 = 编解码不一致

✅ 统一做到这几点基本不会乱:

  • 页面 UTF-8
  • Tomcat UTF-8
  • Java 文件 UTF-8
  • 数据库 UTF-8
  • request / response 都设 UTF-8

如果你能贴出:

  • 是 请求乱码 还是 响应乱码
  • Tomcat 版本
  • 示例代码

我可以直接帮你定位到具体那一行出问题。

向AI问一下细节

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

AI
助
手