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

在已经在应用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("登录成功");

    }
}

jsp

idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)_第1张图片

Idea控制台输出:

req.get  ����
����

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

到tomcat/bin 目录下 编辑catalina.bat文件 

idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)_第2张图片

找到 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请求输出中文乱码)_第3张图片

 

Tomcat7.0 解决方法 (因为tomcat8 默认设置为URIEncoding="UTF-8")

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

idea中tomcat处理get请求,控制台输出中文乱码问题的解决(tomcat7和tomcat8.5get请求输出中文乱码)_第4张图片

添加后:

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

重新启动tomcat, 成功!

 

 

你可能感兴趣的:(idea)