问题背景:
在web端往数据库中添加数据时,发现添加英文不乱码,而添加中文则产生乱码现象.
尝试过的方法:
我检查了数据库中的书名字段的数据类型以及字符集都没问题
然后又检查了spring-servlet.xml中的字符集也没问题.
最终解决方案:
最终使用过滤器解决了中文乱码问题
1.创建字符编码过滤器对象,源码如下:
package com.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterFilter implements Filter{ private String encoding; @Override public void destroy() { this.encoding =null; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (encoding != null) { request.setCharacterEncoding(this.encoding);/*相应的数据编码格式*/ response.setContentType("text/html;charset=" + encoding);/*告诉浏览器本次相应的数据类型*/ } /* * 在过滤器对象的doFilter()方法中,业务逻辑处理完成之后, * 需要通过FilterChain对象的doFilter()方法将请求传递到下一过滤器或目标资源,否则将出现错误。 */ chain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { this.encoding = filterConfig.getInitParameter("encoding"); } }
2.在Web.xml文件中对过滤器进行配置,配置如下:
<!-- 中文乱码过滤器 --> <filter> <filter-name>CharacterFilter</filter-name><!--过滤器名称--> <filter-class>com.filter.CharacterFilter</filter-class><!--过滤器的完整类名--> <init-param> <param-name>encoding</param-name><!--参数名称--> <param-value>UTF-8</param-value><!--参数值--> </init-param> </filter> <filter-mapping><!--过滤器映射--> <filter-name>CharacterFilter</filter-name><!--过滤器名称--> <url-pattern>/*</url-pattern><!--URL映射,给所有页面处理乱码--> </filter-mapping>
结果展示:
中文终于显示出来了 (如果是使用springboot不会存在乱码的问题)
希望能够帮助到你!