1. Post参数获取方式解决中文乱码问题
因为post方法是通过字符输入流来获取参数的信息,所以只需设置字符输入流的编码即可
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 解决乱码:POST,getReader()
request.setCharacterEncoding("UTF-8");//设置字符输入流的编码
//2. 获取username
String username = request.getParameter("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
2. Get获取参数解决乱码问题
Get方法是否可以直接使用Post方法的方式来解决乱码问题呢?
当然是不行的。因为request底层会判断是getQueryString()
还是getReader()
。一种是直接读取字符串而另一个是读入流,所以不能相同处理。
String username = request.getParameter("username");
username = new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);
System.out.println(username);