我有Java应用程序(使用JDK 1.7),它正在读取悖论文件(*.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);
然而,这没有做任何事情。我曾尝试指定字符集为"UTF-8",但这并不奏效。
读取ResultSet的原始代码如下:
String title = rs.getString(7)
但标题不可读。我还尝试使用rs.getBytes(),然后将结果传递给new String,并在构造函数中指定编码,但这也不起作用。
有人知道少了什么吗?
你没有说你正在使用哪个版本的Paradox表。Thru ver 4.5 paradox是一个基于dos的程序。后来它变成了Windows版的Paradox。表是相似的,但有一些增强。
然而,在早期dos版本中,Paradox支持Cyrillic和其他字符集,以及后来的更多字符集。这些都是用当时的一种技术"代码页"来解释的。它们仍然是ascii表——可能在unicode之前。我不确定以后会怎样。
所以,我认为这个想法是实现ascii码页面。当然,这取决于数据最初是否是这样输入的。它们使用扩展的ascii字符,特别是128-168表示"国际"字符。