温馨提示×

温馨提示×

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

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

怎样解决tomcat乱码

发布时间:2026-10-07 15:34:47 来源:亿速云 阅读:94 作者:小樊 栏目:系统运维

Tomcat 乱码通常出现在 控制台日志、页面显示、表单提交、URL 参数 等场景。下面按常见原因 → 解决方式给你一个系统性的排查与解决指南。


一、页面中文乱码(JSP / HTML)

1️⃣ JSP 页面乱码

在 JSP 页面顶部确保有:

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

2️⃣ HTML 页面乱码

<meta charset="UTF-8">

二、Tomcat 控制台日志乱码(Windows 最常见)

问题原因

Windows 控制台默认是 GBK,Tomcat 使用 UTF-8 输出。

解决方案(修改 logging.properties)

编辑:

apache-tomcat/conf/logging.properties

修改或添加:

java.util.logging.ConsoleHandler.encoding = GBK

✅ 如果你用的是 IDE(如 IDEA / Eclipse),还要把 IDE 控制台编码设为 UTF-8 或 GBK 对应一致。


三、请求参数乱码(GET / POST)

1️⃣ POST 请求乱码

在 web.xml 中配置过滤器(推荐):

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

非 Spring 项目可用:

request.setCharacterEncoding("UTF-8");

2️⃣ GET 请求乱码(重点)

Tomcat 7 及以后,GET 参数在 URI 中解析。

修改:

conf/server.xml

找到 Connector:

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

⚠️ 如果是 Tomcat 8+ 且使用了 useBodyEncodingForURI:

useBodyEncodingForURI="true"

四、响应乱码(浏览器显示乱码)

在 Servlet 中:

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

五、数据库乱码(容易忽略)

确保:

  • 数据库:utf8mb4
  • 连接 URL:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8

六、IDE 设置(IntelliJ IDEA 示例)

  • File → Settings → Editor → File Encodings
    • Global / Project / Default 都设为 UTF-8
  • Tomcat VM options:
-Dfile.encoding=UTF-8

七、快速自查清单 ✅

  • [ ] JSP / HTML 是否声明 UTF-8
  • [ ] server.xml 是否配置 URIEncoding
  • [ ] web.xml 是否有编码过滤器
  • [ ] 控制台编码是否匹配
  • [ ] 数据库 & JDBC 编码是否一致

如果你能告诉我:

  • Tomcat 版本
  • 乱码出现位置(页面 / 控制台 / 参数)
  • 是否使用 Spring / Spring Boot

我可以给你更精准的一行配置方案。

向AI问一下细节

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

AI
助
手