Java添加数据到数据库中文乱码,数据库字段中文乱码问号??,数据库字段乱码解决方案
今天帮朋友调试发现,他的Java项目新增数据到MySQL数据库出现乱码
首先就是排除问题:
排除问题一:
数据库连接地址,已按如下代码配置好:
jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=UTF-8
排除问题二:
数据库新建xxx数据库编码设置为UTF-8,已配置好!
排除问题三:
Tomcat的conf文件夹下的server.xml,已按如下代码配置好
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
排除问题四:
过滤器的配置,首先web.xml下
<!-- 统一解决乱码问题的过滤器 -->
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>cn.filter.EncodingFilter</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
辨析的编码过滤器类,如下:
public class EncodingFilter implements Filter {
protected FilterConfig config;
protected String encoding = null;
@Override
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
/* 从web.xml里读取编码配置好的初始值 */
this.encoding = config.getInitParameter("Encoding");
}
/**怎么实现的过滤方法*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain arg2)
throws IOException, ServletException {
if (encoding == null) {
encoding = "UTF-8";
}
//将这三种编码设置后,请求/响应都不会出现乱码了
response.setCharacterEncoding(encoding);
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding);
arg2.doFilter(request, response);
}
/**将会调用destroy方法*/
@Override
public void destroy() {
encoding = null;
}
}
也已配置好!可是!还是乱码,这我就纳闷了,然后凭自己调试多年的经验,我就立刻将问题一的数据库连接地址改为:
jdbc:mysql://localhost:3306/xxx?characterEncoding=UTF-8
即去掉:useUnicode=true&
没想到数据库插入乱码问题解决,和大家汇总一下,顺便也分享一下这种奇葩问题的解决方案!
感兴趣的可以关注一波!会经常分享技术以及调试遇到的bug问题!感谢