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

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);
}
红颜莎娜
浏览 885回答 2
2回答

慕尼黑的夜晚无繁华

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

湖上湖

1、因为很少有人用GET方式传递中文内容,至于过滤器为什么只解决POST方式中文传递乱码问题,我想不是技术性的问题,可能是设计者有意为之,希望引导我们多使用POST方式。就好比要求大货车像客车一样能载很多人,对于设计大货车的人而言,他是不会太考虑这样的情况。 2、GET方式传递中文乱码的问题也不是不能解决,解决方法也很简单,但是不推荐,因这种方法对POST方式不通用。样例代码如下: String username = request.getParameter("username"); username = new String(username.getBytes( "iso-8859-1" ), "utf-8");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java