XiangXi响希 2022-09-24 20:22 采纳率: 0%
浏览 14

过滤器导致的中文乱码问题

问题遇到的现象和发生背景

正常运行项目中文编码是好使的,在刚加入过滤器之后,过滤器里只是单纯的写了个输出个1,页面的中文就全变成了问号,index.jsp里设置过字符集,index.jsp生成对应的java文件也检查过,是设置了字符集的,然后在过滤器又设置了一遍字符集,就又好使了,请问一下各位大佬,有人明白是怎么一回事么

用代码块功能插入代码,请勿粘贴截图
//这是那个刚加入的过滤器
public class LoginFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        PrintWriter out = response.getWriter();
        out.print("1");
        filterChain.doFilter(request,response);
    }

}
//这是index.jsp,已添加了contentType设置了字符集问题
<%@page contentType="text/html;charset=UTF-8"%>

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>欢迎使用oa系统</title>
</head>

<body>
    <form action="${pageContext.request.contextPath}/user/login" method="post">
        账号:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        <input type="checkbox" name="check" value="1">十天内免登录<br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

//这是index.jsp生成的index_jsp.java
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

    if (!javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
      final java.lang.String _jspx_method = request.getMethod();
      if ("OPTIONS".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        return;
      }
      if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method)) {
        response.setHeader("Allow","GET, HEAD, POST, OPTIONS");
        response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
        return;
      }
    }


    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                  null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;
 
运行结果及报错内容

img

我的解答思路和尝试过的方法

我想不明白的是为什么我已经设置了字符集的问题,再加入过滤器之前是好使的,而在加入过滤器之后就不好使了,在过滤器中添加了

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

中文乱码问题就又恢复了,希望有大佬能给我解答一下,感谢🙏

我想要达到的结果

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-24 21:19
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 9月24日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!