转码的Filter问题
我的环境:
Struts2+Spring2+Hibernate3
Tomcat5.0.28/JBoss4.0.5
-------------------------------------------------------
web.xml配置:
<filter>
<filter-name> EncodingFilter </filter-name>
<filter-class> com.stie.util.EncodingFilter </filter-class>
<init-param>
<param-name> Encoding </param-name>
<param-value> UTF-8 </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> EncodingFilter </filter-name>
<url-pattern> *.jsp </url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name> EncodingFilter </filter-name>
<url-pattern> *.action </url-pattern>
</filter-mapping>
--------------------------------------
Filter如下:
public class EncodingFilter implements Filter {
private String encoding = "UTF-8 ";
public void init(FilterConfig fc) throws
ServletException {
String s = fc.getInitParameter( "Encoding ");
if (s != null) {
this.encoding = s;
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain fc) throws
IOException, ServletException {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
fc.doFilter(request, response);
}
public void destroy() {
this.encoding = "UTF-8 ";
}
}
-----------------------------------------------------
JSP中已加编码:
<%@page language= "JAVA " pageEncoding= "UTF-8 " %>
----------------------
Filter是放在其他filter之前的.这个Filter加了之后我存取数据库的信息全是正确的,全部能显示中文,唯独郁闷的地方是我在URL中传中文参数或直接用request.getParameter( "xxx ")去取值的时候还是乱码.
当然能在TOMCAT配置文件里加 URIEncoding= "UTF-8 " 解决这个问题,可是有点不甘心,有没有一个办法彻底解决这个问题.
是我的filter或其他什么地方出问题才导致中文参数乱的吗?欢迎各位朋友解决方案.
------解决方案-------------------- <%@ page language= "java " contentType= "text/html; charset=UTF-8 " pageEncoding= "UTF-8 "%>
<meta http-equiv= "Content-Type " content= "text/html; charset=UTF-8 ">
两句都加上看看
------解决方案--------------------URL中含有中文参数或特殊字符时,一般用encodeURI(url)进行编码。
------解决方案--------------------解决办法就是这个:
URIEncoding= "UTF-8 "
不知道你觉得这样解决有什么问题?
------解决方案--------------------因为Tomcat处理get和post两种提交的数据时处理方式不同
------解决方案--------------------这是tomcat的自身问题,老外是单字节的文字,所以很喜欢用iso-8859-1作为默认属性。
特备是在tomcat5.x版本以后,如dreamover(梦醒了〖http://hellfire.cn〗) 所说get和post两种提交的数据时处理方式不同。所以你还需要在TOMCAT配置文件里加 URIEncoding= "UTF-8 "
------解决方案--------------------