最近写JSP大作业时发现把所有页面以及数据库都统一成utf-8后在写注册时数据库内插入的中文字符仍然是中文乱码,真的是快崩溃了。
后来想起来会不会是框架自身的问题,于是搜索到这个问题:
Struts框架直接把表单数据发送给了ActionForm,所以这里面没有对HttpRequestServlet进行SetCharacterEncoding,所以默认的编码方式仍然是按照ISO-8859-1。
解决方法:过滤器
创建一个CharacterEncodingFilter的过滤器来处理编码问题。
代码如下:
public class CharacterEncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
创建完过滤器后别忘了在配置文件中加入配置信息
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>所放包名.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样就能解决这个字符编码的问题了!