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

时间:2010-05-21 01:52:40

标签: java encoding servlets redirect

我有一些表达式设置字符编码并重定向到某个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???
        //......

    }
}

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

1 个答案:

答案 0 :(得分:2)

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