正常运行项目中文编码是好使的,在刚加入过滤器之后,过滤器里只是单纯的写了个输出个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;
我想不明白的是为什么我已经设置了字符集的问题,再加入过滤器之前是好使的,而在加入过滤器之后就不好使了,在过滤器中添加了
response.setContentType("text/html;charset=UTF-8");
中文乱码问题就又恢复了,希望有大佬能给我解答一下,感谢🙏