温馨提示×

温馨提示×

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

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

如何破解tomcat乱码

发布时间:2026-09-16 22:02:37 来源:亿速云 阅读:98 作者:小樊 栏目:系统运维

Tomcat 出现乱码通常不是“破解”,而是字符编码配置不一致导致的。下面按常见场景给你一套排查 + 解决清单,基本能覆盖 90% 的情况。


一、先确认乱码发生在哪一层

不同位置,解决方法不同:

  1. 页面显示乱码(浏览器看到)
  2. 请求参数乱码(表单 / URL 参数)
  3. 控制台日志乱码
  4. 文件 / 数据库读写乱码

二、Tomcat 本身编码配置(最重要)

1️⃣ server.xml(Connector 编码)

编辑:

conf/server.xml

找到:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

改成:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8"
           useBodyEncodingForURI="true" />

✅ 作用:

  • URIEncoding=UTF-8:解决 GET 参数乱码
  • useBodyEncodingForURI=true:POST 按页面编码解析

三、Web 应用层面(Java / JSP)

2️⃣ JSP 文件

每个 JSP 顶部必须有:

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

3️⃣ Servlet 中设置编码(必须在读取参数前)

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

⚠️ 很重要:必须在 getParameter() 之前


四、Spring / Spring Boot 项目

4️⃣ Spring MVC 字符过滤器

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

Spring Boot 也可直接:

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

五、控制台 / 日志乱码(Windows 常见)

5️⃣ 修改 catalina.bat

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"

Linux:

export JAVA_OPTS="-Dfile.encoding=UTF-8"

六、浏览器 & 数据库配合

6️⃣ 浏览器

  • 页面 <meta charset="UTF-8">
  • 不要强行用 GBK 打开 UTF-8 页面

7️⃣ 数据库

  • MySQL:utf8mb4
  • JDBC:?useUnicode=true&characterEncoding=UTF-8

七、快速自检清单 ✅

  • [ ] server.xml 有 UTF-8
  • [ ] JSP / Servlet 设置 UTF-8
  • [ ] 数据库 UTF-8
  • [ ] 日志文件 UTF-8
  • [ ] 浏览器编码正确

如果你愿意,可以把具体乱码场景 + Tomcat 版本 + 是否 Spring发出来,我可以直接给你精准配置。

向AI问一下细节

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

AI
助
手