设为首页 收藏本站
查看: 594|回复: 0

[经验分享] 关于java连接数据库mysql时出现乱码的问题

[复制链接]

尚未签到

发表于 2016-10-19 10:29:31 | 显示全部楼层 |阅读模式
本博客是为了解决java连接mysql数据库时遇到中文乱码的问题。
在用数据库mysql中插入中文不乱码,但是用java连接数据库时就出现中文乱码的问题。
刚接触mysql的时候,就从网上找了个例子:
import java.sql.*;

public class JDBCTest {

public static void main(String[] args){

           // 驱动程序名
           String driver = "com.mysql.jdbc.Driver";

           // URL指向要访问的数据库名scutcs
           String url = "jdbc:mysql://127.0.0.1:3306/scutcs";

           // MySQL配置时的用户名
           String user = "root";

           // MySQL配置时的密码
           String password = "123456";

           try {
            // 加载驱动程序
            Class.forName(driver);

            // 连续数据库
            Connection conn = DriverManager.getConnection(url, user, password);

            if(!conn.isClosed())
             System.out.println("Succeeded connecting to the Database!");

            // statement用来执行SQL语句
            Statement statement = conn.createStatement();

            // 要执行的SQL语句
            String sql = "select * from student";

            // 结果集
            ResultSet rs = statement.executeQuery(sql);

            System.out.println("-----------------------");
            System.out.println("结果如下所示:");
            System.out.println("-----------------------");
            System.out.println(" 学号" + "\t" + " 姓名" + "\t" + " 性别");
            System.out.println("-----------------------");

            String name = null;
            String sex = null;

            while(rs.next()) {
   
             // 选择sname这列数据
             name = rs.getString("sname");
             sex = rs.getString("sex");
   
             // 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
             // 然后使用GB2312字符集解码指定的字节数组
             name = new String(name.getBytes("ISO-8859-1"),"GB2312");
             sex = new String(sex.getBytes("ISO-8859-1"),"GB2312");


             // 输出结果
             System.out.println(rs.getString("sno") + "\t" + name + "\t" +sex);
            }

            rs.close();
            conn.close();

           } catch(ClassNotFoundException e) {


            System.out.println("Sorry,can`t find the Driver!");
            e.printStackTrace();


           } catch(SQLException e) {


            e.printStackTrace();


           } catch(Exception e) {


            e.printStackTrace();


           }
}
}

但是执行这段代码之后,只要是有中文的地方就被替换成了??,于是又上网找解决方法,很多地方都说是因为编码的问题,于是,我把MySQL.Server 下的my.ini文件下的
[client]下的
default-character-set=gbk改为default-character-set=utf-8
[mysqld]下的
character-set-server=gbk改为character-set-server=utf-8
重新开启数据库的时候,提示说error,具体错误见附件的图。
然后我又把编码改回gbk。
有人说在数据库的url上指定一下编码,即在这句
Connection conn = DriverManager.getConnection(url, user, password);
改为
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=GBK",user,password);
又重新运行java代码,可是发现中文还是乱码。
有人说可能是驱动不支持中文
所以我又下了好几个驱动并配置了环境变量,可是运行上面的代码还是中文乱码。
后来在http://developer.iyunv.com/art/200906/130425.htm这个网址上看到了一个例子,将这个例子运行之后,中文不乱码,于是我对比了之前乱码的那个代码,发现这句是多余的,
name = new String(name.getBytes("ISO-8859-1"),"GB2312");
去掉这句之后,再运行之前那个代码发现中文乱码的问题解决了~~~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288360-1-1.html 上篇帖子: MySql用户角色管理及权限分配(使用MySQLMembershipProvider和MySqlRoleProvider) 下篇帖子: 在Windows上安装多个Mysql[主从数据库同步数据]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表