Чтение данных Unicode из базы данных Access с использованием JDBC

У меня есть база данных MS-Access, к которой я подключаюсь на Java с помощью JDBC (я думаю, мост JDBC-ODBC). В моей базе данных доступа есть некоторые значения на иврите.

Когда я пытаюсь прочитать эти значения, используя String str = rs.getString(1) (rs — это RowSet), я получаю строку, состоящую из вопросительных знаков.

У меня есть другие строки на иврите, которые я установил в коде Java с помощью строковых литералов, и они работают нормально. Поэтому я почти уверен, что проблема именно в чтении из БД.

Я очень новичок во всем этом, поэтому я легко мог пропустить что-то глупое... Я некоторое время искал в Google и ничего не нашел, за исключением того, что некоторые люди говорят, что есть шанс, что это не так. поддерживается (где-то говорят, что у моста JDBC-ODBC есть ошибка касаемо Unicode, но это было с 2005 года, так что кто знает?).

Буду признателен за любую помощь, спасибо.


person Edan Maor    schedule 23.09.2009    source источник


Ответы (1)


Вы пытались установить charSet перед вызовом запроса?

См.: https://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/bridge.html.

person Mohammad    schedule 23.09.2009
comment
Мой предыдущий комментарий, кажется, был удален? Не уверен, почему. Я пытался установить charSet для разных вещей (включая utf-8 и utf-16). Они либо не работали, либо давали мне исключение IllegalArgumentException. Однако, используя вашу ссылку, я попробовал другую кодировку, которая, похоже, помогла (windows-hebrew). Это правильный способ работы? Мне кажется, что я бы предпочел юникод, а не прямое указание, что он на иврите. - person Edan Maor; 23.09.2009
comment
ммм... UTF8 должно работать! Я использую utf8 для символов фарси. Для получения дополнительной информации посетите поддерживаемые кодировки: java .sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html - person Mohammad; 23.09.2009
comment
Нет, просто не работает. Когда я переключаюсь с иврита Windows на UTF8, я получаю строки ???? снова. Чтобы убедиться, что я понимаю, единственное, что мне нужно сделать, это передать JDBC дополнительный параметр - (charSet, UTF8), и все? Тогда строка, которую я возвращаю, должна быть в порядке? - person Edan Maor; 24.09.2009
comment
Ну это если ваши данные в UTF8 конечно! Однако в вашем случае, если все данные на иврите и работает кодировка windows-1255/windows-hebrew, вам не следует беспокоиться о UTF8. Извините, я пропустил тот факт, что все данные могут быть на иврите. - person Mohammad; 24.09.2009