日期:2014-05-16 浏览次数:20886 次
最近用 mysql 做一个远程教学的软件,可是发现一旦向 mysql 中存入中文就会显示“?”,在 eclipse 中读取数据显示的也是“?”,搞的要死,在网上查了相关的解决方案,可是效果都不是很好,都无法解决我的问题,最后自我摸索出一个解决方法。
Mysql 中文乱码出现的可能性应该有:
数据库在安装时没有选择默认为中文的格式,比如 utf8 , gbk ,而是 latin1 等,解决这一问题,可以在安装目录下的 my.ini 文件中修改参数:图片示例如下,将左边的改为右边的样子:
?
以上是我看到的许多的网友的解决方法,我试了许多次,可是结果还是不行,后来我分析这可能和解决中文乱码问题没有什么关系,因为这里的编码设置都是默认的的格式,如果我们的表格的格式是其他的格式,应该就是显示其他的格式了,一样会出现中文乱码的问题。我觉得解决 mysql 数据库乱码问题的解决方法是设置表的数据格式为中文兼容格式,比如 gbk , utf8 等,
方法一:操作图如下:
?上图改为下图:
?
方法二:将该数据库导出,生成 sql 文件,打开文件,将所有之前的格式(比如 latin1 )全部替换为 gbk 。再从新将 sql 文件导入,这时就解决了 mysql 数据库乱码的问题了。
?
java代码:
package csu.tm_learning_client.comm; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { private Connection conn; /** * @param args */ public static void main(String[] args) { DBUtil db = new DBUtil(); db.conn = db.getConnection(); db.addUser(); db.selectUser(); } public Connection getConnection() { if (conn != null) { return conn; } else { try { // 加载驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 连续数据库 conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/tm_learning", "root", "netjava"); } catch (Exception ef) { ef.printStackTrace(); } } return conn; } public int addUser() { try { if (!conn.isClosed()) { // statement用来执行SQL语句 Statement statement = conn.createStatement(); // 要执行的SQL语句 String sql