求救 数据库中内容正常,可通过java提出来输出到控制台之后就全是乱码了

图片说明

数据库的内容是由朋友写的爬虫爬取出来的内容,汉字部分一切正常

图片说明


图片说明

上面两个图是数据库中表的属性,似乎已经全部设置成utf8了,

java debug和以及java文件和工程编码之类的也都调成utf8了。

但一由java提取出来并且输出到控制台测试之后就全变成乱码了

图片说明

代码应该也没问题,很头疼,求大神指导!拜托!万分感谢,代码如下

public static final String url = "jdbc:mysql://localhost:3306/test?&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false";
public static final String name = "com.mysql.jdbc.Driver";
public static final String user = "root";
public static final String password = "*********";

public Connection conn = null;
public PreparedStatement pst = null;

public MySQLConnect(String sql) {
    try {
        Class.forName(name);// 指定连接类型
        conn = DriverManager.getConnection(url, user, password);// 获取连接
        pst = conn.prepareStatement(sql);// 准备执行语句
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void close() {
    try {
        this.conn.close();
        this.pst.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

static String sql = null;  
static MySQLConnect db1 = null;  
static ResultSet ret = null;  

public static void main(String[] args) {  
    sql = "select *from test";//SQL语句  
    db1 = new MySQLConnect(sql);//创建DBHelper对象  

    try {  
        ret = db1.pst.executeQuery();//执行语句,得到结果集  
        while (ret.next()) {  
            String uid = ret.getString(1);  
            String ufname = ret.getString(2);  
            String ulname = ret.getString(3);  
            String udate = ret.getString(4);  
            System.out.println(uid + "\t" + ufname + "\t" + ulname + "\t" + udate );  
        }//显示数据  
        ret.close();  
        db1.close();//关闭连接  
    } catch (SQLException e) {  
        e.printStackTrace();  
    }  
}  

}

5个回答

编码集的问题,数据库和你的java中的编码不一致,首先你要确认你数据库的编码,然后对比,看问题结果

qq_36253437
饮水须思源 你好,我在图一图二里显示的数据库编码,应该都是utf8了呀,然后java里的也都设置成utf8了,可是还是这样呀
大约 2 年之前 回复

数据库原本是utf-8,连接字符串不要使用useUnicode=true只需要characterEncoding=utf8

qq_36253437
饮水须思源 你好,我只留下那部分控制台输出内容也依旧不变,public static final String url = "jdbc:mysql://localhost:3306/test?&characterEncoding=utf8";
大约 2 年之前 回复

可能是你tomcat的字符集问题,修改成utf8即可

qq_36253437
饮水须思源 你好,我只是debug as application,并没有涉及到tomcat呢
大约 2 年之前 回复

你看下你的eclipse中的编码

jdbc:mysql://localhost:3306/test?&characterEncoding=UTF-8

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!