温馨提示×

温馨提示×

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

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

java tomcat为什么乱码

发布时间:2026-09-22 12:12:55 来源:亿速云 阅读:109 作者:小樊 栏目:编程语言

在 Java + Tomcat 环境下出现乱码,通常不是“某一个原因”,而是多个环节编码不一致导致的。下面按常见原因 → 解决方式给你系统梳理一下。


一、最常见的乱码原因(按出现频率)

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

现象:表单提交、URL 参数中文乱码

✅ GET 请求乱码

Tomcat 默认使用 ISO-8859-1 解码 URL

解决方式(Tomcat 8.5+ 已默认 UTF-8,老版本需要改)

conf/server.xml

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

✅ POST 请求乱码

必须在读取参数前设置

request.setCharacterEncoding("UTF-8");

⚠️ 注意:

  • 必须在 request.getParameter() 之前
  • Spring 项目推荐用过滤器(见下文)

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

现象:浏览器显示 ??? 或 中文乱码

✅ 方式一(原生 Servlet)

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

✅ 方式二(JSP)

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

3️⃣ 数据库乱码(非常常见)

现象:存进去乱码 / 读出来乱码

✅ JDBC URL 必须指定编码

jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8

✅ 数据库 & 表也要是 UTF-8

CREATE DATABASE db CHARACTER SET utf8mb4;

4️⃣ 文件 / 日志乱码

现象:log、properties 文件中文乱码

✅ properties 文件

  • 使用 UTF-8
  • IDEA 设置:
Settings → File Encodings → UTF-8

✅ 日志框架(logback / log4j2)

指定编码:

<encoder>
  <charset>UTF-8</charset>
</encoder>

5️⃣ Spring / Spring Boot 项目乱码

推荐统一过滤器

@Bean
public FilterRegistrationBean<CharacterEncodingFilter> filter() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("UTF-8");
    filter.setForceEncoding(true);
    FilterRegistrationBean<CharacterEncodingFilter> bean =
        new FilterRegistrationBean<>(filter);
    bean.addUrlPatterns("/*");
    return bean;
}

二、快速自查清单 ✅

检查点 是否 UTF-8
Tomcat server.xml ✅
request / response ✅
JSP / HTML ✅
数据库 ✅
JDBC URL ✅
IDE 文件编码 ✅

三、一句话总结

Tomcat 乱码 = 编码不一致

请求 → 处理 → 响应 → 存储
每一层都必须是 UTF-8


如果你愿意,可以把:

  • Tomcat 版本
  • 是 GET 还是 POST
  • 页面 / 接口 / 数据库
  • 报错截图或示例

发给我,我可以精准定位是哪一步乱码。

向AI问一下细节

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

AI
助
手