Java添加数据到数据库中文乱码|数据库字段中文乱码问号??|页面添加数据乱码|数据库字段乱码解决方案

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问题!感谢

发布了23 篇原创文章 · 获赞 15 · 访问量 2535

猜你喜欢

转载自blog.csdn.net/u010511598/article/details/104488498