0 0

读取数据库 乱码问题5

连接的数据库是access
		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();
				}

得到的colName是乱码,试了getBytes()不行

问题补充:
AngelAndAngel 写道
还有 你数据库表里面是乱码吗

数据库里的不是乱码

问题补充:
AngelAndAngel 写道
 try {
			colName=new String(colName.getBytes("iso-8859-1"),"UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}

假如还有乱码,你把这几个参数不停的变换一下比如gbk,gb2312什么的。你试试。

都试了,不行啊

问题补充:colName是字段名(数据库里的字段是中文)

问题补充:
AngelAndAngel 写道
连接语句贴一下

驱动:sun.jdbc.odbc.JdbcOdbcDriver
url:jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=G:\WorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\archive\WEB-INF\olddb\Az.mdb
DAO 
2011年10月14日 18:21

9个答案 按时间排序 按投票排序

0 0

采纳的答案

在连接里面指定charSet,
JdbcOdbcDriver中获得连接

public synchronized Connection connect(String s, Properties properties)
        throws SQLException

properties里面指定charSet。
默认的charSet是
properties.getProperty("charSet", System.getProperty("file.encoding"));

2011年10月15日 12:30
0 0

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();
    }
}

2016年12月04日 11:41
0 0

你把数据编码格式改成gbk 或者utf-8

2011年10月16日 09:50
0 0

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

2011年10月15日 20:30
0 0

你myeclipse编码和数据库格式统一,就好了

2011年10月14日 21:28
0 0

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

2011年10月14日 19:27
0 0

连接语句贴一下

2011年10月14日 19:09
0 0

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

2011年10月14日 18:38
0 0

 try {
			colName=new String(colName.getBytes("iso-8859-1"),"UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}

假如还有乱码,你把这几个参数不停的变换一下比如gbk,gb2312什么的。你试试。

2011年10月14日 18:38

相关推荐

Global site tag (gtag.js) - Google Analytics