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

本文介绍了解决Tomcat环境下GET请求中文参数乱码的问题。原因是Tomcat默认使用ISO-8859-1编码解码URL,不支持中文。文章提供了针对Tomcat 8.5和7.0的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在已经在应用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>");
 
    }
}

在这里插入图片描述

jsp

Idea控制台输出:

req.get  ����
����    

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

到tomcat/bin 目录下 编辑catalina.bat文件
在这里插入图片描述
找到 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:解决!

在这里插入图片描述

Tomcat7.0 解决方法 (因为tomcat8 默认设置为URIEncoding=“UTF-8”)
在这里插入图片描述

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

添加后:
在这里插入图片描述

重新启动tomcat, 成功!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值