SQL Server 2005 中的 Unicode 支持
Unicode 支持是 SQL Server 2005 中多语言支持的基础。Unicode 是由 Unicode Consortium(一个提倡为所有语言使用单一字符集的组织)创立的一项标准。SQL Server 2005 支持 Unicode 标准 3.2 版。Unicode 标准的 3.01 版与 ISO-10646(一项与 Unicode 中的所有码位均相符的国际标准)完全相同。
Unicode 的工作方式是,为每个字符提供一个唯一的码位,该码位与平台、程序或语言无关。支持 Unicode 的程序可以处理任何语言的数据。因为其设计宗旨是涵盖世界上所有语言的所有字符,所以不需要让不同的代码页来处理不同的字符集。 因为所有 Unicode 系统都统一使用相同的位模式来表示所有字符,所以从一个系统转到另一个系统时,不会出现字符转换不正确的问题。
管理国际数据库中的字符数据的最简单方法是始终使用 Unicode nchar、nvarchar 和 nvarchar(max) 数据类型,而不使用它们对应的非 Unicode 数据类型:char、varchar 和 text。这样,客户端与所有其他客户端所看到的数据中的字符将是相同的。如果所有使用国际数据库的应用程序还使用 Unicode 变量来代替非 Unicode 变量,则不需要在系统中的任何位置执行字符转换。 注意 未来版本的 Microsoft SQL Server 中将删除 ntext 数据类型。
Unicode 码位及它们所代表的字符与用于可视呈现的“字形”是分开的。ISO 标准 (ISO/IEC 9541-1) 将字形定义为“与具体设计无关的可识别抽象图形符号”。因此,一个字符不必总是由相同的字形乃至唯一的字形来表示。所选择的字体决定将使用什么字形来表示特定码位或一系列码位。
有关详细信息,请参阅 Unicode Consortium 网站。
编码
Unicode 将码位映射到字符,但实际上并不指定数据在内存、数据库或网页中的表示方式。这便是 Unicode 数据编码发挥作用的地方。有许多不同的 Unicode 编码。多半选择一种 Unicode 数据类型即可,不必为这些细节操心;不过,在以下情况下了解编码有重要意义:
应对可能以不同方式对 Unicode 进行编码的应用程序时
向其他平台(非 Microsoft Windows)或 Web 服务器发送数据时
导入其他编码的数据或将数据导出为其他编码时
Unicode 标准定义了其单一字符集的多种编码:UTF-7、UTF-8、UTF-16 和 UTF-32。本部分对这些常见的编码进行说明: UCS-2
UTF-16
UTF-8