jsp解决乱码终极攻略

    今天发现项目竟然有中文乱码问题!? ,明明记得配置好页面编码和filter了,怎么会呢?

     打开页面发现编码如下:              

<%@ page language="java" import="java.util.*,pojo.*" pageEncoding="UTF-8"%>

    过滤器也正常:

       因为也考虑了AJAX的情况,所以和一般的过滤器有点区别,但是红色部分确实被执行了.

public class Encoding implements Filter {
	private String charset;
	private String ajaxPostContentType;
  
    public static final String AJAX_POST_CONTENT_TYPE_DEFAULT = "application/x-www-form-urlencoded";   

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub
			HttpServletRequest request = (HttpServletRequest)arg0;
			
			String requestSrc = request.getQueryString();
			if(requestSrc !=null){
				arg0.setCharacterEncoding("UTF-8");
				arg1.setCharacterEncoding("UTF-8");
				arg0.getParameter("");
			}else{
				arg0.setCharacterEncoding(charset);
				arg1.setCharacterEncoding("text/html;charset="+charset);
			}
			arg2.doFilter(arg0, arg1);
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		charset = arg0.getInitParameter("charset");
		ajaxPostContentType = arg0.getInitParameter("ajaxContent");
		if(ajaxPostContentType == null){
			ajaxPostContentType = AJAX_POST_CONTENT_TYPE_DEFAULT;
		}
	}	
} 

   Web.xml中配置如下:

  <filter> 
  	<filter-name>encode</filter-name>
  	<filter-class>filter.Encoding</filter-class>
  	<init-param>
  		<param-name>charset</param-name>
  		<param-value>utf8</param-value>
  	</init-param>
  </filter>
  
  <filter-mapping>
  	<filter-name>encode</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

貌似该做的都做了,到底问题出在哪里? 经过一番测试原来问题是:

<form id="trheaderform" name="trheaderform" action="lagp.do" >

仔细看了一下,没指定提交方式,所以默认用get方式提交!改为:

<form id="trheaderform" name="trheaderform" action="lagp.do" method="post">

测试OK!

总结一下:

    1。 要保证Jsp的页面编码是UTF-8

    2。 配置好filter,强制编码为UTF-8

    3。 设置Form的提交方式为POST


 

posted on 2012-09-11 14:40  babyblue  阅读(136)  评论(0)    收藏  举报