Servlet-请求参数中文乱码解决方式
Servlet-请求参数中文乱码解决方式
Post请求方式的解决方式
// 2. 解决乱码:POST. getReader()
request.setCharacterEncoding("UTF-8"); //设置字符输入流的编码
GET请求方式的解决方式
原因是:编码为UTF-8, 解码为URL解码,编解码不一致。解码采用的是ISO-8859-1
URL编码
- 将字符串按照编码方式转为二进制
- 每个字节转为2个16进制数并在前边加上%
解决方式:
// 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。