增补字符

更新日期: 2006 年 12 月 12 日

SQL Server 2005 使用 UCS-2 编码方案以二进制格式对 Unicode 字符进行编码。某些语言,例如中文,定义了较少使用并且不包含在 Unicode 标准中的新增字符。UCS-2 将这些字符(称为“增补字符”)**存储为两种未定义的 Unicode 字符,当这些字符组合到一起时,可定义存储中的增补字符。这样,SQL Server 可以不必冒丢失或损坏增补字符的风险来存储增补字符。此外,在 SQL Server 2005 中,可以在任何基于 SQL Server 的应用程序(包括诸如商业智能之类的基于工具的应用程序)中使用和显示增补字符。

如果使用用于 Windows Vista 或 Microsoft Office 2007 的 Microsoft 输入法编辑器 (IME),增补字符将由 UCS 码位 U+10000 或更高码位表示。

使用增补字符时,请考虑下列限制:

  • 只有在 90 排序规则版本中才可以将增补字符用于排序和比较操作。这些比较仅基于码位,而不基于其他在语言上有意义的方式。在操作(如 ORDER BY、GROUP BY 和 DISTINCT)中使用增补字符时,尤其是在同一操作中包含了增补字符和非增补字符时,一定要小心。将 90 后缀添加到其名称后表示 90 排序规则版本。例如,不用 Japanese 排序规则,而使用 Japanese_90。有关详细信息,请参阅安装程序中的排序规则设置
  • 因为增补字符存储为两个双字节字符对,所以 LEN() 函数为每个包含在参数字符串中的增补字符返回的值为 2。同样,CHARINDEX 函数和 PATINDEX 函数不会正确地表示字符串中出现的增补字符,并且 NCHAR 函数将返回只表示一半增补字符对的字符。将 binaryvarbinary 值转换为增补字符也会仅产生一半增补字符对。
  • LEFT、RIGHT、SUBSTRING、STUFF 和 REVERSE 函数可能会将增补字符对分开,并导致意外的结果。
  • 不支持将增补字符与下划线 (_)、空格 ( ) 和插入符号 (^) 通配符一起使用。
  • 不支持将增补字符用在元数据(如数据库对象的名称)中。
  • 因为其独特的存储机制,在服务器和数据库升级操作时增补字符的出现会消耗额外的资源。

SQL Server 2005 提供了一个示例,该示例显示在公共语言运行时 (CLR) 函数中处理包含增补字符的字符串的情形。有关详细信息,请参阅能够识别补充字符的字符串操作

请参阅

概念

使用特殊字符编码

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 阐明了如何确定字符是否为增补字符。