`

Filter造成的乱码

阅读更多

 

 

现象是:更新操作完成后,本应该是中文的字段都莫名其妙变成了乱码。

比较了两个版本的代码,经过排除后,发现问题出在一个filter中,下面是出问题的代码:

 

public class MyFilter extends StrutsPrepareAndExecuteFilter {

  public void doFilter (ServletRequest servletRequest......) {

    HttpServletRequest request  =(HttpServletRequest)servletrequest;

    // 就是这一行,如果没有这一行,就不会出现乱码的现象
    (String) name = request.getParameter("person.name");

    ...
    ...

    super.doFilter(.....);

  }
}





}

 

解决办法:

web.xml 增加编码过滤器
<filter>
  <filter-name>encoding</filter-name>
  <filter-class>
   com.skysz.framework.filter.encoding.EncodingFilter
  </filter-class>
 </filter>

EnCodingFilter 实现类
public class EncodingFilter implements Filter {
 private String encoding;
 public void init(FilterConfig config) throws ServletException {
  this.encoding = config.getInitParameter("encoding");
  if (StringUtils.isNullOrBlank(this.encoding)) {
   this.encoding = "UTF-8";
  }

}
 public void doFilter(ServletRequest srequest, ServletResponse sresponse,   FilterChain chain) throws IOException, ServletException {
  HttpServletRequest request = (HttpServletRequest) srequest;
  request.setCharacterEncoding(encoding);
  chain.doFilter(srequest, sresponse);
 }

public void destroy() {
 }
}


办法来自百度:

http://zhidao.baidu.com/link?url=M7FHDNuEy8gPo4Q-z3GLFcVpUr2VA7rJnhhfntqXnqKWGIsFSm18MghIr-XfXHgxCR6OYnRzJ1khUIj-harkO_

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics