从Java(编码)检索具有国际名称的MS Access列

时间:2011-06-28 12:01:11

标签: java ms-access

我需要从一些旧版Access数据库导入数据。我用一些数据库文件运行代码,一切都很顺利。现在,我尝试了另一个,相同的代码不起作用。

它似乎与字符编码有关,虽然我没有指定任何内容(并且不知道在哪里做)。

Double age = resultSet.getDouble("âge");

在第一个db文件上工作,在另一个文件上给出一个SQLException,其中“找不到列”。在有问题的数据库上,resultSet.getMetaData()。getColumnName(3)(同一列)给出“?ge”。

更新:似乎数据库之间的结果实际上是一致的。我看到的差异是因为第一次导入是从EJB项目中的一个类运行的(我运行了某个类的main方法,而不是app服务器中的EJB模块)。第二次导入是在一个新的独立项目上完成的。独立Java项目总是因此异常而失败,但在第一个项目中运行相同的代码始终有效。

问题在这里提出另一种方式:https://stackoverflow.com/questions/6519517/getting-ms-access-column-with-international-character-from-java

1 个答案:

答案 0 :(得分:0)

通过JDBC-ODBC Bridge和Access ODBC驱动程序操作Access数据库只能对Windows-1252字符集中包含的重音字符可靠地工作。在这些情况下,您必须在Eclipse中将Java源文件的字符编码设置为cp1252(或者在NetBeans中将项目的字符编码设置为windows-1252)。如果您的Java源文件编码为UTF-8,那么如果涉及重音字符,您的代码将无法工作。 (有关详细信息,请参阅我的其他答案here。)

要获得更完整的Unicode字符支持,请考虑使用UCanAccess