用三层架构做项目时,有时处理不当就经常是乱码问题,我也尝尝为此感到头疼,先说说我的方法,数据库建表用的字符编码方式最好和开发工具使用的字符编码保持一致,utf-8,utf-16等等。
1,响应头导致有乱码
一般都是在doget或者dopost方式中设置编码方式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
2,提交方式导致有乱码,这种方式能解决get方式提交的内容
先编辑过滤器类,然后注册到web.xml文件中
(1)在过滤器类中,implement一个方法,Filter,导包是servlet里面的包,被导错包了。
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
filterChain.doFilter(request,response);//让程序继续走下去
}
@Override
public void destroy() {
}
(2)在注册器web.xml文件组成
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.yinggu.filter.encodeingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
这种方式能解决get方式提交的内容,不能解决post方式提交的内容
3,用springMVC自带的过滤器类,这种方式一般可以解决大部分乱码问题
在web.xml文件中配置
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.yinggu.filter.encodeingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
4,如果你是一个大佬,可以自己编写相应的过滤器类。