为了账号安全,请及时绑定邮箱和手机立即绑定

为什么过滤器只可以解决post请求的乱码问题??

为什么过滤器只可以解决post请求的乱码问题??

红颜莎娜 2019-02-19 13:45:09
java中为什么过滤器只能解决post请求乱码(=@__ @=),这是为什么呀 filter:配置filter的Encoding=utf-8 @Override protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) { request.setCharacterEncoding(this.encoding); if (this.forceEncoding) { response.setCharacterEncoding(this.encoding); } } filterChain.doFilter(request, response); }
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

并不是只能解决post编码,而是characterEncoding只对body有效。
http有很多method比如像put方法也是有body的。
即使你使用post如果url中存在中文query parameters一样需要针对url设置编码。

查看完整回答
反对 回复 2019-03-01
?
湖上湖

TA贡献2003条经验 获得超2个赞

1、因为很少有人用GET方式传递中文内容,至于过滤器为什么只解决POST方式中文传递乱码问题,我想不是技术性的问题,可能是设计者有意为之,希望引导我们多使用POST方式。就好比要求大货车像客车一样能载很多人,对于设计大货车的人而言,他是不会太考虑这样的情况。

2、GET方式传递中文乱码的问题也不是不能解决,解决方法也很简单,但是不推荐,因这种方法对POST方式不通用。样例代码如下:

String username = request.getParameter("username");
username = new String(username.getBytes( "iso-8859-1" ), "utf-8");
查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 884 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信