我有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并在约束器中指定编码,但这也不起作用。
是否有人知道缺少什么。
答案 0 :(得分:0)
您不会说您正在使用哪种版本的Paradox表。通过4.5版悖论是一个基于dos的程序。后来它变成了Windows的Paradox。这些表格相似但有一些改进。
然而,一直回到早期的DOS版本,Paradox支持西里尔语和其他字符集,以及更多。这些是使用"代码页"来解释的,这是当时的一种技术。它们仍然是ascii表 - 可能在unicode之前。我以后不确定。
所以,我认为这个想法是实现ascii代码页。当然,这取决于最初是否输入数据。这些使用了扩展的ascii字符,特别是128-168用于"国际"字符。