我有一些表达式设置字符编码并重定向到某个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???
//......
}
}
那么,为什么字符编码没有随请求一起发送?
答案 0 :(得分:2)
HttpServletResponse#setCharacterEncoding()
设置当前响应的编码,而不是后续请求。在随后的请求中将其传回也不是客户的责任。如果没有客户端的交互,你想要实现的目标是不可能的,在这种情况下不需要这样做。要获得所需内容,客户端必须使用charset
属性设置HTTP Content-Type
标头。使用像Firebug这样的HTTP标头调试工具进行检查,您会发现它在请求中不存在。