JSP/Servlet Web应用中文乱码问题
问题描述
我正在开发一个模拟4399小游戏网站的Web应用(使用JSP+Servlet+Tomcat架构),在多个页面上遇到了严重的中文乱码问题。无论是游戏分类页面还是忘记密码页面,所有中文字符都显示为乱码,如截图所示:

已尝试的解决方案
1. 在相关Servlet中添加编码设置
为ForgotPasswordServlet.java添加了编码设置:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置编码
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 处理GET请求,跳转到找回密码页面
request.getRequestDispatcher("/WEB-INF/views/forgotPassword.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置编码
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
// 获取表单数据
String username = request.getParameter("username");
String email = request.getParameter("email");
// 其他代码...
}
2. 在web.xml中添加全局字符编码过滤器
<!-- 全局字符编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. 在JSP页面中设置编码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 其他头部信息... -->
</head>
<!-- 页面主体... -->
项目环境
- 开发环境:Windows 11 家庭版
- 服务器:Apache Tomcat 7
- 构建工具:Maven
- IDE:Trae CN
问题详情
- 访问URL如
/game/category?name=休闲益智时,页面标题和内容中的中文全部显示为乱码 - 访问
/forgotPassword页面时,页面中的中文标签和按钮文字也全部显示为乱码 - 尝试了多种编码设置方案,但问题依然存在
- 每次修改后都重启了Tomcat服务器以应用更改
相关配置文件
web.xml(部分内容)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>4399游戏网站</display-name>
<!-- 全局字符编码过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 其他配置... -->
</web-app>
内容
请问还有哪些可能的原因导致中文乱码问题?有没有其他解决方案可以尝试?是否需要检查某些特定的服务器配置或者项目设置?