从MS Access输出获取Unicode数据将是“???????????????????

时间:2013-03-05 16:15:57

标签: java connection ms-access-2007 ms-access-2010

我正在使用MS Access& MySQL,在访问输入这个词

  • کوردستانیعیراق(这是使用unicode的库尔德语)

我的代码是:

try{
      String path ="src\\Database.accdb";
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
      Connection c = DriverManager.getConnection(""
              + "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path);
      Statement s = c.createStatement();
      ResultSet rs = s.executeQuery("select * from mytable");
      rs.next();
      jTextArea1.setText(rs.getString(1));

  }catch(Exception ex){
    JOptionPane.showMessageDialog(null, ex.getMessage());

  } 

访问输出为??????????????

但是使用MYSQL并且输出是کوردستانیعیراق

为什么? 感谢

3 个答案:

答案 0 :(得分:1)

尝试建立连接时,应为属性设置适当的字符集,例如:

java.util.Properties prop = new java.util.Properties();
prop.put("charSet", "UTF8"); // Not tested..
Connection c = DriverManager.getConnection(
           "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path, prop);

查看JDBC-ODBC Bridge的文档以获取更多详细信息

答案 1 :(得分:1)

如果您只是尝试从MS Access数据库获取数据而不需要运行复杂查询,则可能需要查看Jackcess项目,这是一个本机的跨平台Java用于打开MS Access文件的API。它目前不支持运行SQL查询,但它 允许您访问所有数据,而无需通过(片状)jdbc-odbc桥。它还支持使用索引查找数据(通过IndexCursor)。

(免责声明,我是主要作者)。

答案 2 :(得分:0)

来自microsoft论坛:

If your connection character set is utf8, then you should run this query right 
after connecting to DB:

SET NAMES 'utf8'; 

Also your DB and tables and columns should have utf8_general_ci or other type of 
utf8 collation.

希望这有帮助