private static final String accessDBURLSuffix = ";DriverID=22;READONLY=false";
// Initialize the JdbcOdbc Bridge Driver
static {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
System.err.println("JdbcOdbc Bridge Driver not found!");
}
}
/** Creates a Connection to a Access Database */
public static Connection getAccessDBConnection(String filename)
throws SQLException {
filename = filename.trim();
String databaseURL = accessDBURLPrefix + filename + accessDBURLSuffix;
return DriverManager.getConnection(databaseURL, "", "");
}
/**
* @param args
*/
public static void main(String[] args) {
Connection con = null;
Statement statement = null;
ResultSet rs = null;
try {
con = DBConn.getAccessDBConnection("datebase/db1.mdb");
statement = con.createStatement();
rs = statement.executeQuery("select * from tbl");
// new String(rs.getString(2).getBytes("ISO8859-1"),"gbk")
while(rs.next())
System.out.println(rs.getInt(1)+" " +new String(rs.getString(2).getBytes("ISO8859-1"),"gbk")+" " + rs.getString(3));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
输出结果为:
1 ???? 123
2 adbc ????
中文就变成问号好了。而且我还试过gb2312转码也不行,utf-8也不行。
14 个解决方案
#1
查看数据库中的数据是否是乱码,
#2
数据库显示正常
1 张三 123
2 abdc 李四
1 张三 123
2 abdc 李四
#3
你取出来的时候不转码!直接取试试!(数据库中的应该已经是GBK了,取出时应该不用转码了!)
#4
就是因为直接取是乱码,我才转码的!
#5
ISO
-8859-1
试试
试试
#6
明白了
你数据库的编码应该不是iso8859-1
getBytes("ISO8859-1")时
你用
unicode
utf-8
试试
你数据库的编码应该不是iso8859-1
getBytes("ISO8859-1")时
你用
unicode
utf-8
试试
#7
一样不行
#8
你存入时没有问题吗?
存入的代码!
存入的代码!
#10
刚试了。都不行!!!!
#11
你数据源别写那么复杂
private static final String accessDBURLPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
jdbc:odbc:Driver就这么写,然后你去配置一下!试试!
private static final String accessDBURLPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
jdbc:odbc:Driver就这么写,然后你去配置一下!试试!
#12
楼主ZT
#13
.......
怎么解决的?
#14
mdb编码是GB2312
#1
查看数据库中的数据是否是乱码,
#2
数据库显示正常
1 张三 123
2 abdc 李四
1 张三 123
2 abdc 李四
#3
你取出来的时候不转码!直接取试试!(数据库中的应该已经是GBK了,取出时应该不用转码了!)
#4
就是因为直接取是乱码,我才转码的!
#5
ISO
-8859-1
试试
试试
#6
明白了
你数据库的编码应该不是iso8859-1
getBytes("ISO8859-1")时
你用
unicode
utf-8
试试
你数据库的编码应该不是iso8859-1
getBytes("ISO8859-1")时
你用
unicode
utf-8
试试
#7
一样不行
#8
你存入时没有问题吗?
存入的代码!
存入的代码!
#9
#10
刚试了。都不行!!!!
#11
你数据源别写那么复杂
private static final String accessDBURLPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
jdbc:odbc:Driver就这么写,然后你去配置一下!试试!
private static final String accessDBURLPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
jdbc:odbc:Driver就这么写,然后你去配置一下!试试!
#12
楼主ZT
#13
.......
怎么解决的?
#14
mdb编码是GB2312