java连接mysql数据库时出现乱码_关于java连接数据库mysql时出现乱码的问题

本博客是为了解决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");

去掉这句之后,再运行之前那个代码发现中文乱码的问题解决了~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值