Post请求解决方案:因为post请求是通过流的形式,所以我们设置字符输入流的编码即可解决问题;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 处理post乱码
req.setCharacterEncoding("UTF-8");
}
}
????????????????Get请求乱码的原因,浏览器将我们输入的“中文”转化成了Url编码并以这种编码格式发送给了服务器,服务器是通过“ISO-8859-1”进行解码的,因此出现乱码问题;针对此问题,我们可以先对乱码数据进行编码,转为字节数组,在通过将字节数组解码以此来解决;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get--");
// 获取数据
String userName = req.getParameter("userName");
// 对乱码数据进行编码,转为字节数组
byte[] bytes = userName.getBytes(StandardCharsets.ISO_8859_1);
// 将这季节数组解码
userName = new String(bytes,StandardCharsets.UTF_8);
// 打印输出
System.out.println(userName);
}
注:Tomcat8.0之后,已经doGet请求乱码问题解决
|