关于使用JDBC连接MySQL数据库插入中文乱码

时间:2021-11-10 11:24:45

使用JDBC连接MySQL时,在使用prepareStatement去插入一条Insert语句是,如果所传的参数是中文的话,很多可能会在数据库里面显示乱码。而你在后台打印出来的数据并不是乱码。这时候的原因可能有以下: 

一、数据库建表时为对表格的编码方式进行指定,使表格编码方式停留在:CHARSET=latin1 这个编码方式。

解决办法就是把这个编码方式改为:CHARSET=utf8 因为UTF8可以兼容基本所有的字符。

二、在进行JDBC连接的时候没有指定编码格式。就是在getConnection后面参数里面未加入编码格式

		try {
			Class.forName(DRIVER).newInstance();
			conn = DriverManager.getConnection(DBURL + DBNAME, DBUSER,
					DBPASSWORD);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
解决办法就是在DBURL + DBNAME 后面加上编码方式

		try {
			Class.forName(DRIVER).newInstance();
			conn = DriverManager.getConnection(DBURL + DBNAME + "?" + ENCODING , DBUSER,
					DBPASSWORD);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;

三、在数据库创建时未指定编码格式和字符集,把数据库的字符集与编码个是转换一下。

PS:建议个在编程的时候都使用同一的编码格式,避免在后面处理中文的时候出现乱码