struts2 action 接收中文是乱码

renren4 2009-03-09
前台jsp表单提交中文参数过去,在action中调试时总是接收到乱码

表单使用的是post提交方式
jsp页面设置
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>

struts.xml 也设置了  <constant name="struts.i18n.encoding" value="UTF-8" />

自己还写了一个拦截器
public class CharEncodinInterceptor extends  AbstractInterceptor  {
   @Override
public String intercept(ActionInvocation invocation) throws Exception {
   HttpServletRequest request = ServletActionContext.getRequest();
   request.setCharacterEncoding("UTF-8");
   return invocation.invoke();
  }
}
并且已经成功引用该拦截器

此外tomcat 页设置了 URIEncoding="UTF-8"

但是action 中接收中文时还是乱码

harbey 2009-03-22
如果这样的话还是乱码就是在有点奇怪!
happyblue 2009-03-22
在传的参数encode一下传过去看看
my5622576 2009-03-29
web服务器用的是什么 要是tomcat的话 在server.xml中设置useBodyEncodingForURI="true" URIEncoding="utf-8"
应该就没问题了
zhuimin 2009-03-30
跟踪调试一下看究竟是哪一步出现问题了 ,在想解决的办法。
renren4 2009-03-31
问题已经解决了 谢谢各位 最后是写了个最原始的过滤器解决的

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter( request, response );
}
yuanke 2009-04-01
在struts.xml 配置文件中加入 
<constant name="struts.i18n.encoding" value="gbk"/>就可以了
njyu 2009-05-05
my5622576 写道
web服务器用的是什么 要是tomcat的话 在server.xml中设置useBodyEncodingForURI="true" URIEncoding="utf-8"
应该就没问题了


之前我也遇到过这个问题,后来仔细研究发现,在给Tomcat设定了字符集以后,就能正常接收中文!
Global site tag (gtag.js) - Google Analytics