Поделиться через


Функции поддержки разных языков JDBC Driver

Скачать драйвер JDBC

Функции интернационализации драйвера Microsoft JDBC для SQL Server включают следующие элементы:

  • Поддержка полностью локализованного интерфейса на том же языке, что и SQL Server
  • Поддержка преобразований языков Java для конфиденциальных данных SQL Server языкового стандарта
  • Поддержка международных языков независимо от операционной системы.
  • Поддержка международных доменных имен (начиная с Microsoft JDBC Driver 6.0 для SQL Server).

Обработка символьных данных

Символьные данные на Java по умолчанию рассматриваются как данные в формате Юникода. Объект Java String представляет символьные данные в формате Юникода. Единственное исключение из этого правила в драйвере JDBC — методы считывания и задания ASCII-потока, но это особый случай, поскольку в этих методах при обработке байтовых потоков неявно предполагается использование конкретной известной кодовой страницы (ASCII).

Кроме того, драйвер JDBC поддерживает свойство sendStringParametersAsUnicode для строки подключения. С помощью этого свойства можно указывать, что подготовленные параметры для символьных данных были отправлены в формате ASCII или MBCS, а не в Юникоде. Дополнительные сведения о свойстве подключения sendStringParametersAsUnicode см. в статье Настройка свойств подключения.

Входящие преобразования драйвера

Текстовые данные в Юникоде, поступающие с сервера, преобразовывать не нужно. Они передаются непосредственно в Юникоде. Данные в других форматах, приходящие с сервера, преобразовываются в Юникод из кодировки для данных на уровне базы данных или столбца. Драйвер JDBC использует для выполнения этих преобразований подпрограммы виртуальном машины Java (JVM). Этим преобразованиям подвергаются все методы получения потоков строчных и символьных данных.

Если база данных не поддерживает нужные кодировки для JVM, драйвер JDBC вызовет исключение "Кодовая страница ХХХ не поддерживается средой Java". Чтобы решить эту проблему, следует установить полную поддержку международных символов, необходимую для данной виртуальной машины JVM.

Исходящие преобразования драйвера

Символьные данные, исходящие из драйвера на сервер, могут иметь форматы ASCII или Юникод. Например, новые методы национальных символов в JDBC 4.0, такие как методы setNString, setNCharacterStream и setNClob классов SQLServerPreparedStatement и SQLServerCallableStatement, всегда выполняют отправку на сервер своих значений параметров в формате Юникода.

C другой стороны, методы для API ненациональных символов, такие как setString, setCharacterStream и setClob классов SQLServerPreparedStatement и SQLServerCallableStatement, отправляют на сервер значения своих параметров в формате Юникода, только если свойство sendStringParametersAsUnicode имеет значение True (это значение по умолчанию).

Параметры для кодировок, отличных от Юникода

Для оптимальной работы типов CHAR, VARCHAR и LONGVARCHAR (в параметрах, отличных от Юникода), задайте для свойства строки подключения sendStringParametersAsUnicode значение false и воспользуйтесь методами ненациональных символов.

Проблемы с форматированием

Все форматирование локализованных данных для дат, времени и валют выполняется на уровне языка Java с помощью объекта Locale и различных методов форматирования для типов данных Date, Calendar и Number. В редких случаях, когда драйвер JDBC должен передать зависящие от локали конфиденциальные данные в локализованном формате, нужный инструмент форматирования используется с локалем JVM, заданным по умолчанию.

Поддержка параметров сортировки

JDBC Driver 3.0 поддерживает все параметры сортировки, поддерживаемые SQL Server 2000 (8.x), SQL Server 2005 (9.x) и новые версии параметров сортировки Windows, представленные в SQL Server 2008 (10.0.x).

Дополнительные сведения о параметрах сортировки см. в статьях Поддержка параметров сортировки и Юникода и Имя параметров сортировки Windows (Transact-SQL).

Использование международных доменных имен (IDN)

JDBC Driver 6.0 для SQL Server поддерживает использование международных доменных имен (IDN), которые при необходимости могут преобразовать имя сервера в Юникоде в кодировку, совместимую с ASCII (Punycode), во время подключения. Если международные доменные имена хранятся в системе доменных имен (DNS) в виде строк ASCII в формате Punycode (как указано в RFC 3490), включите преобразование имени сервера в Юникоде, задав для свойства serverNameAsACE значение true. В противном случае, если служба DNS настроена на использование символов Юникода, задайте для свойства serverNameAsACE значение false (по умолчанию). Для более старых версий драйвера JDBC можно также преобразовать имя сервера в Punycode с помощью методов Java IDN.toASCII, прежде чем устанавливать это свойство для подключения.

Примечание.

Большинство программ сопоставителя, написанных для платформ, отличных от Windows, основано на интернет-стандартах DSN, поэтому для международных доменных имен чаще всего используется формат Punycode, хотя DNS-сервер под управлением Windows в частной сети можно в индивидуальном порядке настроить на использование символов UTF-8. Дополнительные сведения см. в статье о поддержке символов Юникода.

См. также

Общие сведения о JDBC Driver