论坛中,mysql的中文问题甚多,现结合已有帖子,和我一下午的测试,现将解决方案与大家共享之。
======版本======
mysql: 1.5
jkd: 1.5
===== mysql======
修改安装目录的 my.ini 文件:
【client section 端】
default-character-set=gb2312
【server section 端】
default-character-set=UTF8
======java code =======
【WriteCN.java】
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/stock?user=root&password=123456&useUnicode=true&characterEncoding=Latin1");
PreparedStatement updateSales = con.prepareStatement(
"REPLACE t_stock SET id =?,bname=?");
updateSales.setString(1, "writeCN");
String str = "中文";
str = new String(str.getBytes("gb2312"),"Latin1");
updateSales.setString(2, str);
updateSales.executeUpdate();
【ReadCN.java】
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/stock?user=root&password=123456&useUnicode=true&characterEncoding=gb2312");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT bname FROM t_stock");
rs.first();
String s=rs.getString(1);
s = new String(s.getBytes("Latin1"),"gb2312");
System.out.println( s );
======版本======
mysql: 1.5
jkd: 1.5
===== mysql======
修改安装目录的 my.ini 文件:
【client section 端】
default-character-set=gb2312
【server section 端】
default-character-set=UTF8
======java code =======
【WriteCN.java】
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/stock?user=root&password=123456&useUnicode=true&characterEncoding=Latin1");
PreparedStatement updateSales = con.prepareStatement(
"REPLACE t_stock SET id =?,bname=?");
updateSales.setString(1, "writeCN");
String str = "中文";
str = new String(str.getBytes("gb2312"),"Latin1");
updateSales.setString(2, str);
updateSales.executeUpdate();
【ReadCN.java】
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/stock?user=root&password=123456&useUnicode=true&characterEncoding=gb2312");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT bname FROM t_stock");
rs.first();
String s=rs.getString(1);
s = new String(s.getBytes("Latin1"),"gb2312");
System.out.println( s );