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

问题描述:

我有读取Paradox文件(* .db)的Java应用程序(使用JDK 1.7)。它适用于拉丁字符。我试图让这个应用程序正确显示西里尔字符,但是不断得到不可预期的结果。使用Java阅读Paradox数据库时的编码问题

原始代码连接到数据库:

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”,但这并没有起作用。

原始代码读取结果集是这样的:

String title = rs.getString(7) 

但标题是无法读取。我也尝试使用rs.getBytes(),然后将结果传递给新的字符串,并在约束器中指定编码,但那也没有效果。

有没有人有任何想法缺少什么。

+0

任何人都可以给我至少一个想法? –

你不说你正在使用哪个版本的Paradox表。通过版本4.5悖论是一个基于dos的程序。后来它成为Windows的悖论。表格很相似,但有一些改进。

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

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