读取数据库 乱码问题

连接的数据库是[b][color=red]access[/color][/b]
[code="java"] Statement st=null;
ResultSet rs =null;
try {
st=conn.createStatement();
rs= st.executeQuery("select * from B01 where 1=1 ");
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
System.out.println(count);
for(int i = 1;i<=count; i++){

String colName;
try {
colName=rsmd.getColumnLabel(i);//这里出现乱码了,试了很多方法都不行
System.out.println(colName);

} catch (Exception e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
[/code]
得到的colName是乱码,试了getBytes()不行

在连接里面指定charSet,
JdbcOdbcDriver中获得连接
[code="java"]
public synchronized Connection connect(String s, Properties properties)
throws SQLException
[/code]
properties里面指定charSet。
默认的charSet是
[code="java"]
properties.getProperty("charSet", System.getProperty("file.encoding"));
[/code]

[code="java"] try {
colName=new String(colName.getBytes("iso-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}[/code]
假如还有乱码,你把这几个参数不停的变换一下比如gbk,gb2312什么的。你试试。

还有 你数据库表里面是乱码吗

连接语句贴一下

[url]http://www.iteye.com/problems/60888[/url]
确实不太好解决。再找找其他方法。

[code="java"]你myeclipse编码和数据库格式统一,就好了[/code]

看看你数据库,本身存的数据是不是乱码?关于乱码,要弄清:是存进去就变成乱码(数据库存的就是乱码),还是取出来就是乱码(存的数据不是乱码,但是取出来就乱码)啊,解决方格式法很多:1.Jar包不兼容 2.需要转码 3.数据库连接字符串,后面加编码

[code="java"]你把数据编码格式改成gbk 或者utf-8[/code]

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class ConnectAccess {
public void ConnectAccessFile() throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

/**
* 直接连接access文件。
/

Properties info = new Properties();
info.setProperty("charSet","GB2312");
info.setProperty("user", "cms");
info.setProperty("password", "cms");
String url = "jdbc:odbc:driver={Microsoft Access Driver (
.mdb)};DBQ=G://cms.mdb";
Connection conn = DriverManager.getConnection(url, info);

    Statement stmt = conn.createStatement();  
    ResultSet rs = stmt.executeQuery("select * from DEMO_USER");  
    while (rs.next()) {  
        System.out.println(rs.getString("du_id"));
        System.out.println(rs.getString("du_name"));
        System.out.println(rs.getString("du_account"));
        System.out.println(rs.getString("du_password"));
    }  
    rs.close();  
    stmt.close();  
    conn.close();
}

public static void main(String args[]) throws Exception {  
    ConnectAccess ca = new ConnectAccess();  
    ca.ConnectAccessFile();
}

}