JavaWeb request获取参数造成的中文乱码问题解决方法

一、乱码原因

当我们使用request对象,发送请求时,会对你要获取的参数进行编码。在此过程中使用的编码方式是ISO8859-1的编码方式。而这种编码方式是不支持中文的,所以会造成乱码。

二、解决方法

首先介绍通用的解决方法,对于get和post提交方式都适用
我们先在html中写入一个简单的表单,表单的提交方式设置为post
在这里插入图片描述
然后我们在service方法中写入代码来获取我们输入的姓名,并在控制台输出

  String parameter = request.getParameter("username");
  System.out.println(parameter);

运行html文件,此时我们在浏览器中输入内容,点击提交按钮后
在这里插入图片描述
在这里插入图片描述
我们可以看到,在控制台输出的内容为乱码
这是因为获取参数时采用了ISO8859的编码方法,所以要想解决问题我们就需要将现在的乱码转为乱码前的二进制位。再使用UTF-8的编码方式
在之前的基础上我们增添增添代码,最后再次在控制台输出一次编码后的参数
再次运行,输入与之前相同的数据,在控制台中查看结果

     String parameter = request.getParameter("username");
     System.out.println(parameter);

      //将乱码转回用ISO8859-1编码前的二进制位
      byte[] bytes = parameter.getBytes("ISO8859-1");
      //再使用UTF-8进行编码
      parameter = new string(bytes,"UTF-8");
      
      System.out.println(parameter);

在这里插入图片描述
可以看到经过重新编码,中文乱码问题得到了解决

三、注意事项

刚才我们介绍了通用方法,但我们也可以发现他的弊端,就是如果输入的数据量很大,就会很繁琐。所以针对使用post的提交方式我们可以使用一种更为简单的方式来解决乱码的问题。
注:使用get的提交方式时该方法不适用! 不适用! 不适用!

对于使用的是post提交方式我们只需要在获取参数前加上一行代码就可以解决问题。

  request.setCharacterEncoding("UTF-8");
  String parameter = request.getParameter("username");
  System.out.println(parameter);

运行程序,输入数据,再次查看控制台的输出信息可以看到中文乱码问题也得到了解决
在这里插入图片描述

发布了26 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/showadwalker/article/details/84108806