Проблема кодирования при чтении базы данных Paradox с использованием Java - PullRequest
1 голос
/ 23 ноября 2011

У меня есть 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);

однако это ничего не сделало. Я попытался указать кодировку как "UTF-8", но это не сработало.

Исходный код для чтения ResultSet выглядит следующим образом:

String title = rs.getString(7)

но заголовок не читается. Я также попытался использовать rs.getBytes (), а затем передать результаты в новую строку и указать кодировку в конструкторе, но это тоже не сработало.

Есть ли у кого-нибудь представление о том, чего не хватает.

1 Ответ

0 голосов
/ 27 декабря 2011

Вы не говорите, какую версию таблиц Paradox вы используете. Через версию 4.5 парадокс был программой, основанной на душе. Позже это стало Парадоксом для Windows. Таблицы были похожи, но имели некоторые улучшения.

Однако, начиная с ранних версий DOS, Paradox поддерживал кириллицу и другие наборы символов, а также многое другое. Они были интерпретированы с использованием «кодовых страниц», технологии того времени. Они все еще были таблицами ASCII - вероятно, до Unicode. Я не уверен насчет позже.

Итак, я думаю, что идея заключается в реализации кодовых страниц ascii. Конечно, это зависит от того, как именно так были введены данные. Они использовали расширенные символы ascii, особенно 128-168 для "международных" символов.

...