Как установить кодировку символов для Oracle 10g с JDBC - PullRequest
5 голосов
/ 04 ноября 2011

Я использую базу данных Java и Oracle 10g.

Как указать кодировку символов, например UTF-8, для базы данных Oracle с JDBC?
И как я могу узнать текущую кодировку, используемую JDBC?

Ответы [ 2 ]

6 голосов
/ 04 ноября 2011

Данные, передаваемые тонким драйвером Oracle JDBC, всегда отправляются как UTF-16 (внутреннее представление java).Сервер базы данных преобразует это в любой национальный набор символов, который был настроен для использования (поэтому, если база данных была настроена на UTF-8, это преобразование произойдет автоматически).Обратите внимание, что набор символов установлен на уровне базы данных, а не на уровне схемы или соединения.

Чтобы узнать набор символов, настроенный в БД, выполните этот запрос:

SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET' ;

(учетная запись, которую вы используете для подключения к базе данных, должна иметь соответствующие разрешения для чтения системных таблиц, чтобы сделать это)

4 голосов
/ 04 ноября 2011

Я не уверен, что понимаю вопрос.

Набор символов базы данных Oracle устанавливается при создании базы данных и, как правило, довольно болезненно меняться.Ваше Java-приложение не сможет указать набор символов базы данных.Вы можете увидеть, что база данных и набор национальных символов

SELECT *
  FROM v$nls_parameters
 WHERE parameter LIKE '%CHARACTERSET'

Поскольку ваш текущий набор символов базы данных - ISO 8859-1, он не сможет хранить символы из азиатских языков.Вы можете следовать инструкциям по миграции набора символов в Руководстве по поддержке глобализации 10g, чтобы изменить набор символов базы данных вашей существующей базы данных.Вам нужно будет работать с администратором базы данных, поскольку это повлияет на всю базу данных.

Внутренне строки Java всегда имеют Unicode (в частности, UTF-16), поэтому вы не можете ничего сделать, чтобы настроить это.Выводом вашего Java-приложения может быть не Unicode - если ваше Java-приложение, например, генерирует веб-сайт, существует высокая вероятность того, что сгенерированные веб-страницы используют какой-либо набор символов, отличный от Unicode.Но я не думаю, что ты об этом спрашиваешь.

...