发行说明


43.1 介绍

Unicode 标准是编写的字符和文本的通用字符编码方案。它非常精确地定义字符集,并为它定义少量的编码。它定义对多语言文本进行编码所采用的一致方式,这允许在国际间进行文本数据交换,同时也创建了软件全球化的基础。

Unicode 提供的两种编码方案是 UTF-16 和 UTF-8。

缺省编码方案是 UTF-16,它采用 16 位编码格式。UCS-2 是 UTF-16 的子集,它使用两个字节来表示一个字符。UCS-2 通常被认为是能够表示所有现有单字节和双字节代码页中的所有必需字符的通用代码页。UCS-2 在 IBM 公司被注册为代码页 1200。

另一 Unicode 编码格式是 UTF-8,它是面向字节的,并且已经被设计为更易于配合现有的基于 ASCII 的系统使用。UTF-8 使用变化的字节数(通常为 1-3,有时为 4)来存储每个字符。不可变的 ASCII 字符被作为单个字节存储下来。所有其他字符都是使用多字节来存储的。通常,UTF-8 数据可被未对多字节代码页指定的代码视作扩充 ASCII 数据。UTF-8 在 IBM 公司被注册为代码页 1208。

非常重要的一点是,当在本地代码页、UCS-2 和 UTF-8 之间转换数据时,应用程序应考虑这些数据的需求。例如,在 UCS-2 中,20 个字符刚好需要 40 个字节,而在 UTF-8 中,有时需要 20 到 60 个字节,这取决于原始代码页和所使用的字符。

43.1.1 DB2 Unicode 数据库和应用程序

通过指定代码集 UTF-8 创建的 DB2 通用数据库 Unix 版、Windows 版或 OS/2 版可以用来存储 UCS-2 和 UTF-8 格式的数据。这种数据库被称为 Unicode 数据库。SQL 字符数据是使用 UTF-8 编码的,而 SQL 图形数据是使用 UCS-2 编码的。这意味着 MBCS 字符(包括单字节和双字节字符)存储在字符列中,而 DBCS 字符存储在图形列中。

应用程序的代码页可能与 DB2 用来存储数据的代码页不匹配。在非 Unicode 数据库中,当代码页不相同时,数据库管理器会对在客户机和服务器之间传送的字符和图形(纯 DBCS)数据进行转换。在 Unicode 数据库中,客户机代码页与 UTF-8 之间的字符数据转换是由数据库管理器自动执行的,但是所有图形(UCS-2)数据在传送时在客户机和服务器之间没有执行任何转换。

图 1. 数据库管理器执行的代码页转换

数据库管理器执行的代码页转换

注:

  1. 当连接至 Unicode 数据库时,如果应用程序设置为 DB2CODEPAGE=1208,且本地代码页为 UTF-8,则不需要执行代码页转换。

  2. 当连接至 Unicode 数据库时,CLI 应用程序还可以将字符数据作为图形数据接收,及将图形数据作为字符数据接收。

应用程序可以指定 UTF-8 代码页,指示它将发送和接收采用 UCS-2 格式的所有图形数据以及采用 UTF-8 的字符数据。此应用程序代码页仅用于 Unicode 数据库时才是受支持的。

使用 Unicode 时应考虑的其他事项:

  1. 数据库代码页是在创建数据库时确定的,并且缺省情况下,它的值是根据操作系统语言环境(或代码页)来确定的。可以使用 CODESET 和 TERRITORY 关键字来显式创建 Unicode DB2 数据库。例如:
    CREATE DATABASE unidb USING CODESET UTF-8 TERRITORY US
    
  2. 应用程序代码页也被缺省为本地代码页,但是它可以被 UTF-8 以以下两种方式的其中一种进行覆盖:

    
    
  3. GRAPHIC 列中的数据将对每个 Unicode 字符采用刚好两个字节,而 CHAR 列中的数据将对每个 Unicode 字符采用 1 到 3 个字节。在字符的 SQL 限制方面,GRAPHIC 列中的字符的 SQL 限制通常是 CHAR 列中的字符的 SQL 限制的一半,但是字节数方面是相等的。例如,CHAR 列的最大字符长度为 254,而图形列的最大字符长度为 127。有关更多信息,参见 SQL Reference 的“Functions”中的 MAX。
    
    
  4. 图形文字与带有 G 前缀的字符文字是不同的。例如:
    SELECT * FROM mytable WHERE mychar = 'utf-8 data' AND mygraphic = G'ucs-2 data'
    

    注意:
    对于 Unicode 数据库,G 前缀是可选的。
    有关更多信息及更新支持,参见40.6.2.4, "Literals in Unicode Databases"
    
    
  5. 对 CLI/ODBC 和 JDBC 应用程序的支持与对嵌入式应用程序的支持有所不同。 参见"CLI Guide and Reference" 以获取有关特定于 CLI/ODBC 支持的信息。
    
    
  6. 平台间的 UCS-2 数据的字节排序可能有所不同。在平台内部,DB2 使用大尾数法格式。

43.1.2 文档更新

这些《发行说明》包括对下列有关将 Unicode 与 DB2 版本 7.1 配合使用的信息的更新:

有关将 Unicode 与 DB2 配合使用的更多信息,参考《管理指南》的『本地语言支持(NLS)』附录:『DB2 UDB 中的 Unicode 支持』。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]