MySQL默认使用 ISO-8859-1 ( 即Latin1 ) 字符集,而JAVA内部使用Unicode编码,因此在JAVA中向MYSQL数据库插入数据时,或者读取数据时,都需要先转换一下编码方式:
插入数据:
如:
...
String str="中文";
String sql = "insert into Tb (xxx) values (?)"
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,str);
pstmt.executeUpdate();
这样插入到Mysql数据库后,查看数据可以看到,插入数据变成了几个“?”,即成了乱码。
插入数据的解决方法是:
String str="中文";
str = new String(str.getBytes(),"ISO8859_1"); //加入此句,改变编码为iso-8859-1
String sql = "insert into Tb (xxx) values (?)"
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,str);
pstmt.executeUpdate();
读取数据时的解决方法:
String str = new String(record.getString("wname").getBytes("ISO8859_1"));
这种办法治标不治本
5.mysql的字符集问题可以参考官方的文档
http://dev.mysql.com/doc/refman/5.1/zh/charset.html#charset-server
数据库编码及MySQL字符集详解
本文详细介绍了数据库编码统一及MySQL字符集配置的方法,包括创建数据库和数据表时使用UTF-8编码,通过修改my.ini文件调整MySQL默认编码,解决在使用程序连接数据库时出现的中文乱码问题,以及在JAVA中向MYSQL数据库插入和读取数据时的编码转换技巧。
574

被折叠的 条评论
为什么被折叠?



