0
点赞
收藏
分享

微信扫一扫

JavaWEB中文乱码问题解决

斗米 2022-04-19 阅读 63
javatomcat

1.决get请求中文乱码问题

@WebServlet("/parseget")
public class PaserGet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
        	throws ServletException, IOException {
        String name = req.getParameter("name");
        String s = new String(name.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        System.out.println(s);
    }
}

2.post请求中文乱码问题

  • ParsePost.java
@WebServlet("/parsepost")
public class ParsePost extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
        	throws ServletException, IOException {
        req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
        String name = req.getParameter("name");
        System.out.println(name);
    }
}
  • parsepost.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post" action="demo8">
        姓名:<input type="text" name="name" /><br />
        <button>提交</button>
    </form>
</body>
</html>

3.返回中文乱码

3-1 使用HttpServletResponse
@WebServlet("/demo9")
public class Demo9 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
        	throws ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.println("中文");
    }
}
3.2 使用HttpServletResponse提供的setCharacterEncoding和setHeader
@WebServlet("/demo")
public class Demo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
        	throws ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        resp.setHeader("Content-Type", "text/html; charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.println("中文");
    }
}
举报

相关推荐

0 条评论