JDBC Driver 的国际功能

Microsoft JDBC Driver for SQL Server 的国际功能包括：

- 通过使用与 SQL Server 相同的语言来为用户提供完全本地化的体验。

- 对于受区域设置影响的 SQL Server 数据，支持 Java 语言转换。

- 无论使用何种操作系统，都支持国际语言。

# 处理字符数据

默认情况下，Java 中的字符数据作为 Unicode 进行处理；Java String 对象表示 Unicode 字符数据。在 JDBC Driver 中，唯一可以不遵守此规则的是 ASCII 流的 getter 和 setter 方法，这属于比较特殊的情况，因为这些方法使用的字节流带有单个已知代码页 (ASCII) 的隐式假定。

此外，JDBC Driver 还提供了 sendStringParametersAsUnicode 连接字符串属性。此属性可用于指定字符数据的预定义参数作为 ASCII 或多字节字符集 (MBCS) 而不是 Unicode 来发送。有关 sendStringParametersAsUnicode 连接字符串属性的详细信息，请参阅 设置连接属性。

# 驱动程序传入转换

来自服务器的 Unicode 文本数据不是必须要转换的数据。它将作为 Unicode 直接进行传递。来自服务器的非 Unicode 数据从数据库或列级别的数据代码页直接转换为 Unicode。JDBC 驱动程序将使用 Java 虚拟机 (JVM) 转换例程执行这些转换。这些转换将通过所有类型化 String 和 Character 流 getter 方法得到执行。

如果 JVM 无法对来自数据库的数据提供相应的代码页支持，则 JDBC Driver 将引发“Java 环境不支持 XXX 代码页”异常。要解决此问题，您应安装该 JVM 所需的完整国际字符支持。有关示例，请参阅 Sun Microsystems 网站上的 Supported Encodings（受支持的编码）文档。

# 驱动程序传出转换

从驱动程序发送至服务器的字符数据可以为 ASCII 或 Unicode。例如，新的 JDBC 4.0 区域字符方法（例如，SQLServerPreparedStatement 类和 SQLServerCallableStatement 类的 setNString、setNCharacterStream 和 setNClob 方法）始终以 Unicode 格式将参数值发送到服务器。

另一方面，非区域字符 API 方法（例如，SQLServerPreparedStatement 类和 SQLServerCallableStatement 类的 setString、setCharacterStream 和 setClob 方法）仅在 sendStringParametersAsUnicode 属性设置为“True”（默认值）时才以 Unicode 格式将值发送到服务器。

# 非 Unicode 参数

为了获得非 Unicode 参数的 CHAR、VARCHAR 或 LONGVARCHAR 类型的最佳性能，请将 sendStringParametersAsUnicode 连接字符串属性设置为“False”，并使用非区域字符方法。

# 格式问题

对于日期、时间和货币，将使用 Locale 对象在 Java 语言级别执行本地化数据的所有格式设置，并针对 Date、Calendar 和 Number 数据类型执行各种不同的格式设置方法。只有在极少数的情况下，JDBC Driver 才需要以本地化格式传递受区域设置影响的数据，此时需要根据默认的 JVM 区域设置来使用相应的格式化程序。

# 排序规则支持

JDBC Driver 3.0 支持 SQL Server 2000 和 SQL Server 2005 支持的所有排序规则，此外还支持 SQL Server 2008 中引入的新排序规则或新版 Windows 排序规则名称。

有关排序规则的详细信息，请参阅 SQL Server 联机丛书中的排序规则和 Unicode 支持和 Windows 排序规则名称 (Transact-SQL)。

# 请参阅

JDBC 驱动程序概述
发送有关本主题的反馈至 Microsoft。

© 2012 Microsoft。保留所有权利。