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
设置编码。
湖上湖
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");
添加回答
举报
0/150
提交
取消