Как установить Oracle кодировку в Java - PullRequest
0 голосов
/ 17 июня 2020

В Oracle вы можете установить кодировку перед сохранением некоторых данных в БД, используя NLS_LANG=<the character set value>

Есть ли способ добиться этого в Java, чтобы при сохранении данных в Oracle db, он использует значение набора символов c oracle?

Причина, по которой я спрашиваю об этом, заключается в том, что, как я понимаю, это достигается на уровне сеанса, что означает, что если этот сеанс используется кем-то другим, он будет иметь измененную кодировку.

Я хотел бы программно достичь в java следующее: Получить текущую кодировку, установить новую кодировку в сеансе, сохранить данные в db восстанавливает старую кодировку в выпуске сеанса. Спасибо

ps: у меня возникли трудности с установкой набора символов в Java, конкретный тип c, который мне нужен перед записью в oracle, это AL32UTF8 Однако я не могу найти способ установить это в приложении java до сохранения данных

Ответы [ 2 ]

1 голос
/ 17 июня 2020

JDB C приложения не используют NLS_LANG (это исключение из правил).

Oracle do c говорит:

Java приложения, которые подключаются к Oracle базам данных с помощью Oracle JDB C, не используют NLS_LANG. Вместо этого Oracle JDB C сопоставляет языковой стандарт по умолчанию Java виртуальной машины, на которой работает приложение, с настройками языка и территории Oracle базы данных. Oracle JDB C затем настраивает сеанс подключенной базы данных, используя эти параметры. Поскольку Java внутренне работает в Юникоде, для набора символов клиента всегда устанавливается Юникод. Если приложение явно не изменяет его, локаль по умолчанию для виртуальной машины Java устанавливается на основе языкового стандарта операционной системы пользователя, в которой работает виртуальная машина Java. Информацию о настройке локали по умолчанию для Java виртуальной машины см. В документации к Java VM.

0 голосов
/ 17 июня 2020

В случае, если вы запускаете свою программу Java на машине, на которой работает ваша Oracle БД, вы можете установить переменную среды NLS_LANG, и Oracle будет использовать ее

...