使用Java读取Paradox数据库时的编码问题

时间:2011-11-23 01:15:39

标签: java character-encoding internationalization paradox cp1251

我有Java应用程序(使用JDK 1.7),它正在读取Paradox文件(* .db)。它适用于拉丁字符。我正在尝试使此应用程序正确显示西里尔字符,但不断得到不可靠的结果。

连接数据库的原始代码:

Class.forName(DB_DRIVER);
String dbUrl = "jdbc:odbc:Driver={Microsoft Paradox Driver (*.db )};DBQ=" + workingDb + ";READONLY=true";
return DriverManager.getConnection(dbUrl);

我尝试在获取连接时传递其他属性:

java.util.Properties prop = new java.util.Properties();
prop.put("charSet", "windows-1251");            
return DriverManager.getConnection(dbUrl, prop);
然而,这并没有做任何事情。我试图将charset指定为“UTF-8”,但这也不起作用。

读取ResultSet的原始代码如下所示:

String title = rs.getString(7)

但标题不可读。我还尝试使用rs.getBytes()然后将结果传递给新的String并在约束器中指定编码,但这也不起作用。

是否有人知道缺少什么。

1 个答案:

答案 0 :(得分:0)

您不会说您正在使用哪种版本的Paradox表。通过4.5版悖论是一个基于dos的程序。后来它变成了Windows的Paradox。这些表格相似但有一些改进。

然而,一直回到早期的DOS版本,Paradox支持西里尔语和其他字符集,以及更多。这些是使用"代码页"来解释的,这是当时的一种技术。它们仍然是ascii表 - 可能在unicode之前。我以后不确定。

所以,我认为这个想法是实现ascii代码页。当然,这取决于最初是否输入数据。这些使用了扩展的ascii字符,特别是128-168用于"国际"字符。