本地字符集是指可在客户机操作系统的命令行 shell 中输入或显示的字符集。在 UNIX 系统上,本地字符集由 LANG 环境变量控制。在 Windows 上,则由“区域和语言选项”中的设置控制。
在 7.0 之前的 Rational ClearQuest 版本中,除非本地字符集与 ClearQuest 数据代码页匹配,否则不允许执行写操作。 如果设置不匹配,那么仅允许只读操作。由于 ClearQuest 应用程序使用客户机或 Web 服务器的本地字符集(而不是数据库集的 ClearQuest 数据代码页)将数据写入数据库,因此只读方式很有必要。
从 V7.0 开始,Rational ClearQuest 软件处理以 Unicode 编码的数据,且其应用程序使用 ClearQuest 数据代码页将数据写入其数据库。即使本地字符集与 ClearQuest 数据代码页不匹配,这些应用程序也可以读/写方式连接到 ClearQuest 数据库。
对于 Oracle,供应商数据库字符集是指字符集或 charset;对于 IBM® DB2®,是指代码页或代码集;对于 SQL Server,是指代码页或整理。
从 Rational ClearQuest V7.1.1 开始,您可以为 Oracle 和 DB2 数据库集选择 UTF-8 ClearQuest 数据代码页。UTF-8 数据代码页允许在用户数据库中进行多语言字符存储。 选择 UTF-8 作为数据代码页时,除非操作系统的本地代码页也是 UTF-8,否则您将在混合本地字符集部署环境下工作。在 Windows 系统上,操作系统的本地代码页并不是选项。
但为混合本地字符集部署或 UTF-8 多语言数据库环境编写的脚本和挂钩必须可以处理本地字符集中不包含的 ClearQuest 字符数据。必须将这些脚本和挂钩编码为支持 Unicode,以便在这些环境中充分利用此功能。
Designer 包含一个新设置:Unicode 感知。 为 V7.0 编写的挂钩可以指定从 ClearQuest API调用中返回的字符串中的字符是只能为本地字符集字符(RETURN_STRING_LOCAL),还是可以是任意 Unicode 字符(RETURN_STRING_UNICODE)。 另外,新的 API 功能还可用于控制返回字符串方式。在 RETURN_STRING_LOCAL 方式下,如果返回字符串中包含本地字符集无法表示的字符,那么 API 调用将返回异常。在 RETURN_STRING_UNICODE 方式下,API 调用将正确地返回所有字符。
为确保挂钩和脚本可处理混合本地字符集或 UTF-8 部署中的所有数据,您必须将方式设置为 RETURN_STRING_UNICODE,并正确处理可能返回的 Unicode 字符。不仅需要将返回字符串方式设置为 RETURN_STRING_UNICODE,您还必须验证您的代码能否正确处理 Unicode 字符。下列指导原则非常有用,但最终您必须使用脚本语言的相应 Unicode 编程技术。
如果要升级到 V7.0,并且环境中的所有本地字符集与 ClearQuest 数据代码页匹配(这在较早版本中很常见),那么这些更改对现有模式不会有任何影响。缺省方式为 RETURN_STRING_LOCAL,这允许挂钩和脚本能继续正常运行。
如果要将 V7.0 部署到本地字符集与 ClearQuest 数据代码页不匹配的环境中,那么必须确保您的脚本可以处理 ClearQuest 软件的 Unicode 字符数据、将脚本返回方式设置为 RETURN_STRING_UNICODE 并将程序包升级到 V7.0。有关支持 Unicode 的 ClearQuest 程序包的列表,请参阅表 1。 如果系统尝试向脚本返回本地字符集中不包含的任何字符数据,那么不能处理 Unicode 的脚本可以运行,但是会返回错误。只要将这些脚本处理的数据限制为客户机或 Web 服务器的本地字符集内的字符,那么这些脚本就可以继续正常运行。
程序包 | 返回字符串方式 |
---|---|
AMWorkActivitySchedule | RETURN_STRING_UNICODE |
ATStateTypes | RETURN_STRING_UNICODE |
Attachments | RETURN_STRING_UNICODE |
AuditTrail | RETURN_STRING_UNICODE |
BTStateTypes | RETURN_STRING_UNICODE |
BuildTracking | RETURN_STRING_UNICODE |
Customer | RETURN_STRING_UNICODE |
DeploymentTracking | RETURN_STRING_UNICODE |
DTStateTypes | RETURN_STRING_UNICODE |
RETURN_STRING_UNICODE | |
EnhancementRequest | RETURN_STRING_UNICODE |
eSignature | RETURN_STRING_UNICODE |
History | RETURN_STRING_UNICODE |
Notes® | RETURN_STRING_UNICODE |
Project | RETURN_STRING_UNICODE |
Resolution | RETURN_STRING_UNICODE |
TPM | RETURN_STRING_UNICODE |
ClearQuest 软件将所有数据作为 Unicode 字符处理。但可能无法对模式挂钩(Perl 和 Visual Basic)及其他 ClearQuest API 应用程序或集成进行编码,以使其可处理 Unicode 字符。在 V7.0 中,可以使用返回字符串方式来处理此问题。可在 Designer 脚本编辑器中将挂钩代码设置为 Unicode 感知,以表明脚本运行在 RETURN_STRING_UNICODE 返回字符串方式下。(要执行该操作,请选中 Unicode 感知复选框。)脚本可以调用 SetPerlReturnStringMode 或 SetBasicReturnStringMode 方法将返回字符串方式设置为 RETURN_STRING_UNICODE。
当字符串由针对 Perl 或 COM 的 ClearQuest API 返回时,返回字符串方式将限制(RETURN_STRING_LOCAL)或允许(RETURN_STRING_UNICODE)完整字符表示。
建议编写可以处理 Unicode 字符的挂钩和脚本。RETURN_STRING_LOCAL 作为缺省返回字符串方式提供,因此较早版本的 ClearQuest 软件的现有挂钩和脚本不做任何更改就可以运行。但是稍后您应修改现有挂钩和脚本,使其在 RETURN_STRING_UNICODE 方式下可正常运行,即使当前您不需要使用 Unicode 字符。
缺省情况下,如果 ClearQuest API 脚本返回的字符串中包含本地字符集以外的字符,那么会在步骤 2 中抛出异常。此异常可防止数据损坏。在复审并确认代码可以处理 Unicode 字符之后,可通过使用 ClearQuest API 或在 Designer 脚本编辑器中设置 RETURN_STRING_UNICODE 返回字符串方式。通过进行此更改,在步骤 2 中,如果字段值字符串包含非本地字符集数据,那么针对 Perl 的 ClearQuest API 将以 UTF8 (UNICODE) 返回该字符串,并且针对 VBScript、Visual Basic 或 COM 的 ClearQuest API 将返回不受限的 Unicode 字符。 然后,可将本地字符集无法表示的字符返回给挂钩或脚本,以作为 Unicode 字符处理。
在 RETURN_STRING_LOCAL 方式下,可以执行诸如运行查询之类的操作,并且查询结果集可以包含 Unicode 字符。仅当由 Rational ClearQuest API 方法从结果集中抽取的数据以及从 API 调用中返回的字符不是本地字符集字符时,才会产生异常。例如,如果传回到集成的数据仅包含本地字符集字符,那么集成或外部应用程序可以对变更请求进行操作。当返回的字符表示本地字符集字符时,集成代码必须处理由 Rational ClearQuest API 方法抛出的异常。如果将集成 API 配置为 RETURN_STRING_UNICODE,那么将不会抛出异常,但应用程序必须正确处理返回的所有 Unicode 字符。如果应用程序写入 ClearQuest 数据代码页无法表示的字符,那么在 RETURN_STRING_LOCAL 和 RETURN_STRING_UNICODE 这两种方式下,也会向调用集成或应用程序返回异常。
要了解更多信息,请参阅“IBM Rational ClearQuest API 参考大全”帮助中的对挂钩和脚本设置返回字符串方式。
一些程序包或模式并没有设计成处理 Unicode 和非本地字符集数据。 对每个程序包产品中各个脚本的支持情况在 Designer 脚本编辑器中指明(Unicode 感知复选框已选中)。DefectTracking 和 Common 模式支持 Unicode。 但是,在混合字符集部署中不能使用任何包含不支持 Unicode 字符的程序包的模式。请参阅表 1。
您可以编辑或添加用于访问程序包字段的挂钩,并且可将这些挂钩视作程序包的一部分。 这些挂钩从程序包处继承缺省 Unicode 支持,但 Designer 并不显示挂钩的此正确设置。
如果连接到数据库集或数据库部落的所有客户机的本地字符集都与数据代码页匹配,那么您不必考虑这些问题。要了解有关字符表示和代码页设置的更多信息,请参阅“管理 Rational ClearQuest”联机帮助。