使用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:建议个在编程的时候都使用同一的编码格式,避免在后面处理中文的时候出现乱码