培风图南以星河揽胜 2025-09-25 19:28 采纳率: 100%
浏览 8
已结题

JSP/Servlet Web应用中文乱码问题

JSP/Servlet Web应用中文乱码问题

问题描述

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

img

已尝试的解决方案

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

问题详情

  1. 访问URL如 /game/category?name=休闲益智 时,页面标题和内容中的中文全部显示为乱码
  2. 访问 /forgotPassword 页面时,页面中的中文标签和按钮文字也全部显示为乱码
  3. 尝试了多种编码设置方案,但问题依然存在
  4. 每次修改后都重启了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>

内容

请问还有哪些可能的原因导致中文乱码问题?有没有其他解决方案可以尝试?是否需要检查某些特定的服务器配置或者项目设置?

  • 写回答

5条回答 默认 最新

  • Celestial Visionary 2025-09-25 19:48
    关注

    这边建议你先学习JVM,了解java的底层,这样遇到问题才有解决思路,而不是依赖AI的提示找解决问题的提示,这样子走不远的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月25日
  • 创建了问题 9月25日