转载

【已解决】Eclipse连接MySQL插入数据乱码解决方案

昨天晚上用Eclipse连接MySQL,然后插入数据测试一下,结果插入成功了,可是乱码了。

 Class.forName("com.mysql.jdbc.Driver"); // 加载驱动             Connection connection = DriverManager.getConnection(                             "jdbc:mysql://localhost:3306/jdbc_text01?useUnicode=true&characterEncoding=UTF8",                             "root", "123"); // 连接数据库                          Statement state = connection.createStatement(); // sql处理             int influenceLine = state                     .executeUpdate("INSERT INTO newtable VALUES(null,'测试数据','天国')");             System.out.println("影响行数:" + influenceLine); 

数据我用Navicat查看后,发现中文被?取代了,本来想着不就编码问题嘛,以前也发生过,然后我查看了Eclipse的开发环境编码,发现编码格式是GBK,那就难怪了,我数据库的编码格式是UTF-8,然后我怀着乐观的心态修改了开发环境的编码格式,还有工程的编码格式,最后还把文件的编码也检查了,确保无误。

PS:

1、开发环境编码修改:

点击Eclipse菜单栏的Window - - -  选择Preferences - - - 在查询框输入 Workspaces - - - 选择Workspaces - - - 在Text file encoding的Other处选择UTF8

2、工程编码修改:

右击工程 - - - 选择Properties - - - 在Text file encoding的Other处选择UTF8

3、文件编码修改:

右击.java文件 - - - 选择Properties - - - 在Text file encoding的Other处选择UTF8

好了,正如上面修改的步骤一样,我修改完Eclipse的编码后,又在Navicat里查询了数据库的编码格式:

 SHOW VARIABLES LIKE '%char%'; character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_filesystem = binary character_set_results = utf8 character_set_server = utf8 character_set_system = utf8 

结果如我所料,没有问题,然后我就信心满满的重新插入数据了,结果中文还是被?取代,这里我就有点疑惑了,妈妈告诉我,接着我就上百度查了,结果发现很多同僚都有这个问题阿,可是我看了很多博客和疑问解答后,都没找到根本原因,网上的同僚都说是编码不一致、myini文件没设置好、重装MySQL、还有的说用gbk,这些方式我逐一都试过了,结果还是一样,这可谓是让我信心大跌阿,本来以为只是个小问题,没想到要倒腾那么久,从昨天下午6点多弄到晚上11点多都没弄好,然后由于我有早起的习惯,所以11点多就关电脑了,打算第二天再弄。

第二天起床,洗漱完就打开电脑,又上网查有关资料,结果还是没啥用,然后又问了几个朋友,他们都说是编码问题,说让我仔细看看,我表示我已经看了十几遍了,每次都带着侥幸的心理说会不会我眼花了,结果还是一样。

后来我对着Eclipse发呆,突然想到会不会是数据库驱动问题,然后就上网下载了一个mysql-connector-java-5.1.14-bin,而我原来用的是mysql-connector-java-3.0.10-stable-bin,结果插入中文成功了!

所以有时候编码问题如果确保没错,可能是驱动的问题,大家要记得用比较新的驱动,我的可能是驱动版本太低了(不过我朋友用倒是没问题),好了,这些就是鄙人的见解,第一次写博客哈,有什么不好的地方还请大家多多指点迷津!谢谢!

原文  http://www.cnblogs.com/qiujunx/p/5159918.html
正文到此结束
Loading...