Microsoft SQL Server 2000 的国际化功能(1)(2)

2008-04-02 10:47:00来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

UTF-16 所遵循的是每个代码数据点两个字节的相同标准。但是,对于 UTF-16,某些代码数据点会使用紧跟其后的另一代码数据点来定义字符。chin a i t p oe er . co msZSXwpB

和 UCS-2 相似,UTF-16 也以 Little Endian 的方式进行存储,就象在默认情况下在 Windows 上存储相同。chin a i t p oe er . co msZSXwpB

重要 虽然 UCS-2 不识别代理,但他不会破坏代理所在数据库中的实际数据,而是将他们当作两个单独(未定义)的字符。chin a i t p oe er . co msZSXwpB

虽然 SQL Server 7.0 和 SQL Server 2000 能够毫无损失地存储代理对,但他们却将代理对当作两个未定义的 Unicode 字符,而不是个单独的字符。这样的应用程式通常会被描述为代理“中立”或代理“安全”,其中安全是指能够存储数据,即使本身并不能和其进行交互。现在,由于没有正式定义的代理字符,所以代理“识别”应用程式相当少见。Microsoft Word 2000、Microsoft Windows 2000 和 Microsoft Internet Explorer 5.0 连同更高版本就是几种代理识别应用程式。chin a i t p oe er . co msZSXwpB

UTF-8

许多需要 8 位编码的 ASCII 和其他面向字节的系统(如邮件服务器)都必须跨越多种使用不同编码、不同字节排序和不同语言的电脑。UTF-8 是一种和电脑上的字节排序无关的用于处理 Unicode 数据的编码架构。虽然 SQL Server 2000 不以 UTF-8 形式存储数据,但他在至少一种关键情形下支持 UTF-8,即支持可扩展标记语言 (XML)。有关周详信息,请参见本文后面的使用 SQL Server 2000 的 XML 支持来处理多种语言数据。chin a i t p oe er . co msZSXwpB

其他许多数据库系统(如 Oracle 和 Sybase SQL Server)都支持使用 UTF-8 进行存储的 Unicode。根据服务器的实现方法,数据库引擎在技术上能够更为容易地实现这种支持(服务器上现有的任何文本管理代码每次只处理 1 字节的数据,因此无需太大的更改)。在 Windows 环境中,UTF-8 存储具备以下缺点: chin a i t p oe er . co msZSXwpB

  • 组件对象模型 (COM) 在其 API 和接口中只支持 UTF-16/UCS-2。假如数据以 UTF-8 格式存储,则经常需要进行转换(只有在使用 COM 时才会出现这种问题;SQL Server 数据库引擎通常不调用 COM 接口)。

  • Windows NT 和 Windows 2000 的内核都是 Unicode,他们分别使用 UCS-2 和 UTF-16。同样,UTF-8 存储格式需要许多额外的转换(如先前对 COM 的说明相同,这不会给 SQL Server 数据库引擎造成转换上的问题,但可能会影响许多客户端操作)。

  • 对许多字符串操作,UTF-8 可能会较慢。由于字符没有固定的宽度,排序、比较和几乎任何字符串操作都可能会减慢。

  • UTF-8 通常需要两个以上字节,但增加的大小会占用磁盘上和内存中的更大空间。

由于 XML 是较为重要的 Internet(他往往面向字节)通信标准,所以他默认为 UTF-8 是很有道理的。chin a i t p oe er . co msZSXwpB

什么是代理?

代理区域是 Unicode 中从 U D800 到 U DFFF 的范围,他包含 1024 个低代理值和 1024 个高代理值。高代理和低代理能够进行组合,以提供对上百万个可能字符的访问。假如只有一个代理对的一半,则将被视为无效。要成为有效,必须始终有一个高代理和一个紧随其后的低代理。和检测 DBCS(双字节字符系统)字符所需的复杂规则相比较,这使代理检测变成了简单的范围检测。chin a i t p oe er . co msZSXwpB

当发布 SQL Server 7.0 时尚不存在任何代理。发布 SQL Server 2000 后,仅有的代理字符是那些和纯文本中的语言标记相关的字符。chin a i t p oe er . co msZSXwpB

重要 如上所述,代理能够在不导致任何数据丢失风险的情况下进行存储,但是,当尝试使用 SQL Server 字符串处理函数来处理数据时,应很小心。另外,Windows 2000 现在只支持代理字符的代码数据点排序。chin a i t p oe er . co msZSXwpB

在发布 SQL Server 2000 后,经过 ISO 和 Unicode 标准组织的一起努力,更多的字符已添加到代理范围中,其中包括 40,000 个 CJKV(中文、日语、朝鲜语和越南语)象形文字。这些字符主要用于传统的和古典的文献,有助于对丰富的 CJKV 文学遗产进行编码。chin a i t p oe er . co msZSXwpB

SQL Server 2000 的数据类型

很明显,数据库的核心任务是数据存储。本部分将讨论在使用 SQL Server 2000 数据类型存储国际化数据时出现的一些问题。chin a i t p oe er . co msZSXwpB

非 Unicode 文本类型:char、varchar 和 text

当处理以 charvarchartext 数据类型存储的文本数据时,需要考虑的最重要的限制是只能存储单个代码页中的信息。确切的代码页取决于列的排序规则(假如不存在列级排序规则,则使用数据库的排序规则)。要确定用于给定列的代码页,能够使用 COLLATIONPROPERTY 函数,如下例所示:chin a i t p oe er . co msZSXwpB

SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')



936



SELECT COLLATIONPROPERTY('Latin1_General_CI_AI', 'CodePage')



1252



SELECT COLLATIONPROPERTY('Hindi_CI_AI_WS', 'CodePage')



0



上例中添加了印地语,以指出许多区域配置(如格鲁吉亚语和印地语)都没有代码页,因为他们是“仅 Unicode”的排序规则。这些排序规则不适用于以上数据类型。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Microsoft SQL Server 2000 的国际化功能(2)

下一篇: Microsoft SQL Server 2000 中查询优化器使用的统计(2)