很多种情况下,从数据库中查询出来的内容中文显示正确,但是如果向数据库中插入或更新表时,会出现中文乱码问题,但英文显示正确,以下三种方式可以解决中文乱码问题。
1.数据库连接的配置文件中添加characterEncoding=utf-8
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/stu?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
大多数情况下,这种方式就可以解决,如果不行,继续配置以下两种方式。
2.使用过滤器filter
在com.baidu.filter包下——选择new——新建filter过滤器——MyEncodingFilter.java。在doFilter方法中,添加如下内容:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
并且配置web.xml文件,如果文件自动有配置就不用了,否则,切记web.xml文件一定要配置。
<filter>
<filter-name>MyEncodingFilter</filter-name>
<filter-class>com.baidu.filter.MyEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.配置工具中的编码格式,例如explice中,window—general—workspace—Text file Encoding设置为utf-8。
以上三种方法,基本可解决所有的乱码问题。