Servlet response.sendRedirect(String url) 似乎没有发送编码,为什么?

发布于 2024-09-02 01:25:06 字数 493 浏览 2 评论 0原文

我有一些 Servlet 显式设置字符编码并重定向到某个 servlet

class Servlet1 extends HttpServle{
   void doGet(..... ){
        // ...
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8"):
        //......
        response.redirect(servlet2);
    }
}

class Servlet2 extends HttpServle{
   void doGet(..... ){
        // ...
        request.getCharacterEncoding();  // prints null ?? why???
        //......

    }
}

那么,为什么字符编码不随请求一起发送?

I have some Servlet that explicity sets the character encoding and redirect to some servlet

class Servlet1 extends HttpServle{
   void doGet(..... ){
        // ...
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8"):
        //......
        response.redirect(servlet2);
    }
}

class Servlet2 extends HttpServle{
   void doGet(..... ){
        // ...
        request.getCharacterEncoding();  // prints null ?? why???
        //......

    }
}

So, why the character encoding not being send with the request?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

π浅易 2024-09-09 01:25:06

HttpServletResponse#setCharacterEncoding() 设置当前响应的编码,而不是后续请求的编码。客户端也没有责任在后续请求中将其传回。如果没有客户端的交互,您想要实现的目标根本不可能实现,在这种情况下不需要这样做。为了得到你想要的,客户端必须设置 HTTP < code>Content-Type 标头本身带有 charset 属性。使用 HTTP 标头调试器工具(例如 Firebug)检查它,您会发现它在请求中不存在。

The HttpServletResponse#setCharacterEncoding() sets the encoding on the current response, not on the subsequent request. It's also not the client's responsibility to pass it back on the subsequent request. What you're trying to achieve is simply not possible without interaction of the client, which it is not required to do in this case. To get what you want, the client has to set the HTTP Content-Type header with a charset attribute itself. Check it with a HTTP header debugger tool like Firebug and you'll see that it is absent in the request.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文