HTML中From表单提交数据到Servlet中文乱码详细解决方案【多测师_何sir】

From表单提交数据和response响应数据中文乱码解决方案

1,POST请求

例如一下代码:
form表单通过submit按钮发起post请求提交输入框中的值 ”多测师“ 到后台Servlet中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
<form method="post" action="DemoServlet">
    <input type="text" name="textName" value="多测师"/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

servlet中的代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String textName = request.getParameter("textName");
        System.out.println(textName);
}

post方式提交中文乱码解决方法在doPost方法中的首行添加如下代码:
request.setCharacterEncoding(“UTF-8”);

2,get请求

例如一下代码:
form表单通过submit按钮发起get请求提交输入框中的值 ”多测师“ 到后台Servlet中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
<form method="get" action="DemoServlet">
    <input type="text" name="textName" value="多测师"/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

servlet中的代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String textName = request.getParameter("textName");
        System.out.println(textName);
    }

get方式提交中文乱码解决方法在Tomcat的conf目录下的server.xml中找到Connector
在Connector中添加URIEncoding=“UTF-8”

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

3,response响应数据到浏览器显示乱码解决方案

servlet中的代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 这里设置UTF-8是为了解决接收中文数据乱码
        request.setCharacterEncoding("UTF-8");
        String textName = request.getParameter("textName");
        System.out.println(textName);

        // 这里设置UTF-8是为了解决响应中文数据到浏览器乱码
        response.setHeader("content-type", "text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        // 把中文数据响应到浏览器
        PrintWriter writer = response.getWriter();
        writer.println("多测师");
        writer.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // get方法中接收中文数据乱码需要在tomcat的conf目录下的server.xml的Connector中配置URIEncoding="UTF-8"
        String textName = request.getParameter("textName");
        System.out.println(textName);

        // 这里设置UTF-8是为了解决响应中文数据到浏览器乱码
        response.setHeader("content-type", "text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        // 把中文数据响应到浏览器
        PrintWriter writer = response.getWriter();
        writer.println("多测师");
        writer.close();
    }

无论是doGet方法还是doPost方法都需要在方法中添加
response.setHeader(“content-type”, “text/html;charset=UTF-8”);
response.setCharacterEncoding(“UTF-8”);

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值