Servlet-请求参数中文乱码解决方式

Servlet-请求参数中文乱码解决方式

Post请求方式的解决方式

 // 2. 解决乱码:POST. getReader()
        request.setCharacterEncoding("UTF-8");  //设置字符输入流的编码

GET请求方式的解决方式

原因是:编码为UTF-8, 解码为URL解码,编解码不一致。解码采用的是ISO-8859-1

URL编码

解决方式:

 // 2. 获取username
String username = request.getParameter("username");
System.out.println("解决乱码前:" + username);


// 3. GET,获取参数的方式:getQueryString
// 乱码原因:tomcat进行URL解码,默认的字符集ISO-8859-1
// 3.1 先对乱码数据进行编码:转为字节数组
byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);
// 3.2 字节数组解码
username = new String(bytes, StandardCharsets.UTF_8);
System.out.println("解决乱码后:" + username);

Tomcat8.0之后,已经解决了GET请求乱码问题,将默认的解码方式设置为UTF-8。