张图南 发表于 2021-9-9 22:59:17

Web 的doPost方法设置了UTF-8,控制台输出还是乱码

Debug时已经看到value的值是“张三” ,控制台输出是: ��������
@WebServlet("/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      req.setCharacterEncoding("UTF-8");
      String value = req.getParameter("value");
      System.out.println(value);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      super.doGet(req, resp);
    }
}

加了过滤器也没用
@WebFilter("/test")
public class WordFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
      System.out.println("WebFilter");
      //servletRequest.setCharacterEncoding("UTF-8");
      filterChain.doFilter(servletRequest,servletResponse);
    }
}
加了过滤器后输出也就变成:
WebFilter
��������

补充一下jsp的代码吧
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
    <form action="/test" method="post">
      <input type="text" name="value">
      <input type="submit" name="submit">
    </form>
</body>
</html>

为什么会出现这种事,以及怎么处理?

wp231957 发表于 2021-9-10 07:31:21

不会用JAVA啊,但是用其他的还没遇到这样的情况

等等豆豆 发表于 2021-9-10 14:23:21

你这个是中文被编译后出现的状况好好改改

张图南 发表于 2021-9-11 11:00:23

等等豆豆 发表于 2021-9-10 14:23
你这个是中文被编译后出现的状况好好改改

没懂,控制台上可以看到中文啊。比如这种:11-Sep-2021 10:20:02.540 信息 org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录的部署已在毫秒内完成
但是Debug时有中文值,控制台输出时变成全是问号: ????

小甲鱼的铁粉 发表于 2021-9-15 10:39:24

-Dfile.encoding=UTF-8
配置tomcat添加这个
页: [1]
查看完整版本: Web 的doPost方法设置了UTF-8,控制台输出还是乱码