Get请求,Post请求乱码问题解决方案
之所以出现乱码,主要是由于编码和解码采用的方法不同。
因此保证编码解码格式一致是避免乱码发生的重要前提。
问题背景:JavaWeb技术下,Tomcat作为容器,发送请求的时候出现乱码问题。
下面以两种常见的请求方式为例讲解乱码问题的解决方法。
1.Post方式请求乱码。
自从Tomcat5.x以来,Get方式和Post方式提交的请求,tomcat会采用不同的方式来处理编码。
对于Post请求,Tomcat会使用request.setCharacterEncoding和response.setCharacterEncoding方法设置的编码格式进行处理。
如果未设置,则默认都采用iso-8859-1编码。因此如果在发送Post请求的时候出现乱码,常见的解决方法如下:
a) request.setCharacterEncoding("utf-8");
b) String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");
(当然response的编码也不要忘记设置成utf-8的)
【注】:上面提供的是两种不同的方法,并不是一种方法的两个步骤!!!
我们可以看出来第一种方式写法固定,非常很适合通过写成过滤器的方式进行编码的统一转换。
publicclass EncodingFilter extends HttpFilter {publicvoid doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {Stringcharset = this.getInitParameter("charset");if(charset == null ||charset.isEmpty()) {charset ="UTF-8";}request.setCharacterEncoding(charset);response.setContentType("text/html;charset=" + charset);chain.doFilter(request, response);}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
