Использование UTF8 в оракуловых таблицах, связанных с MS Access - PullRequest
1 голос
/ 16 декабря 2011

Символы UTF8 не отображаются в моих связанных таблицах в базе данных Oracle. (У них даже возникают проблемы с доступом к блокировке записей)

Я пытался добавить "charset=utf8" в строку подключения, но пока это не сработало.

Я думал, что попробую этот запрос при запуске программы:

SET NAMES utf8

Но как мне запустить его на удаленном сервере Oracle через то же соединение, что и связанные таблицы?

1 Ответ

2 голосов
/ 16 декабря 2011

Я не использую Oracle ODBC в Windows, но я использую различные драйверы Oracle ODBC в ряде операционных систем UNIX.Вы не говорите, какой драйвер ODBC вы используете, но уверены, что он имеет атрибут подключения charset = utf8?Драйвер Oracle ODBC для Linux, похоже, не имеет этого атрибута.Кроме того, я не слышал о «set names utf8» для Oracle;не правда ли, что это mysql?

В UNIX, чтобы получить данные UTF-8 от Oracle, вы устанавливаете для переменной среды NLS_LANG что-то вроде AMERICAN_AMERICA.AL32UTF8, которая сообщает клиенту Oracle, как вам нужны данные.

Кроме того, ODBC не очень хорошо справляется с UTF-8 (объяснение здесь слишком длинное).Драйверы ODBC в Windows используют так называемые широкие API-интерфейсы SQLxxxW, которые принимают и возвращают SQLWCHAR, которые имеют размер 2 байта и обычно закодированы в UCS-2.Драйвер, совместимый с Юникодом в Windows, должен обеспечивать широкие API-интерфейсы SQLxxxW, а UTF-8 в него не входит.

Однако, как я уже сказал, я не использую Oracle в Windows, но некоторые из перечисленных выше могут помочь вам.

...