欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)

程序员文章站 2022-06-14 19:55:26
...

在已经在应用filter中指定了页面编码为UTF-8的情况下,通过GET方式发送的请求中的中文在控制台输出是�乱码,

而通过POST方式发送的中文识别正常。

原因是: Tomcat默认是按ISO-8859-1进行URL解码,ISO-8859-1并未包括中文字符,中文字符不能被正确解析了


如以下代码所示:

Servlet:

@WebServlet("/mylogin")
public class Myservlet extends HttpServlet {
 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
 
        resp.setContentType("text/html");
        String name = req.getParameter("name");
        System.out.println("req.get  "+name);
        System.out.println("中文");
        resp.getWriter().println("<font color='red'>登录成功</font>");
 
    }
}

Idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)

jsp

Idea控制台输出:

req.get  ����
����    

解决方法: Tomcat8.5 解决方法

到tomcat/bin 目录下 编辑catalina.bat文件
Idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)
找到 JAVA_OPTS 参数在加上 -Dfile.encoding=UTF-8

if not "%JSSE_OPTS%" == "" goto gotJsseOpts
set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
:gotJsseOpts
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8"

重启tomcat:解决!

Idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)

Tomcat7.0 解决方法 (因为tomcat8 默认设置为URIEncoding=“UTF-8”)
Idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)

tomcat7.0 在上述操作外,还需要在 tomcat/conf 目录下的server.xml 中添加 URIEncoding=“UTF-8”

添加后:
Idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)

重新启动tomcat, 成功!