文本编码和非法字符检测工具

Rational® Synergy 7.0 或 7.1 升级之前,在您的数据库上安装和运行非法字符检测工具。该工具将查找转换为 UTF-8 期间可能未正确修改的字符。

开始之前

验证当前版本的 Rational Synergy 是否需要完成此任务。
当前的 Rational Synergy 版本 需要转换
7.0
7.1
7.1a

Rational Synergy 7.1a 已使用 UTF-8 编码,因此不执行任何编码转换;从 7.1a 升级的用户可以跳过此部分。

关于此任务

Rational Synergy 数据库从 7.0 或 7.1 升级至 Rational Synergy 7.2 时,该数据库中的所有文本元数据(类型和对象名、字符串和文本属性值以及类似项)将从先前发布标识中使用的 Windows CP1252 编码转换为 7.2 中使用的 UTF-8 编码。

未对 Rational Synergy 数据库中所控制的文件内容进行任何更改;仅对 Informix® 或 Oracle 中存储的文本元数据进行重新编码。

在 R7.0 和 R7.1 中,Rational Synergy 期望采用 CP1252(或其 Latin-1 子集)对文本数据进行编码。但是,可能已采用其他编码方式使用未检查编码的 Classic 客户机输入一些字符。

以下十六进制字节值未采用 CP1252 定义:
  • 0x81
  • 0x8D
  • 0x8F
  • 0x90
  • 0x9D
如果在数据库升级期间在文本元数据中遇到其中任何字节值,都会将其转换为字符串:序列“\x”后跟十六进制值。例如,如果在升级期间遇到字节值 0x81,会将其转换为字符串“\x81”。升级期间遇到的每个此类字节值都会记录在升级日志中,此类出现情况列表将存储在数据库中,供以后检索。
非法字节值 已转换的字符串字面值
0x81 “\x81”
0x8D “\x8D”
0x8F “\x8F”
0x90 “\x90”
0x9D “\x9D”
缺省情况下,该工具将扫描并报告表中记录的任何字节值。如果数据库中的用户已运行采用 Windows CP1252 或 ISO Latin-1 以外编码方式的 Classic 客户机,那么必须标识 CP1252 与您的编码方式之间不同的代码点。同时还必须按照下面步骤 6中所指示扫描这些代码点。例如,假设您的数据库包含采用 Latin-2 (ISO-8859-2) 的数据,那么下表将包含 CP-1252 与 ISO-8859-2 之间不同的一些代码点。您必须在检测扫描工具中包含这些代码点,因为在升级到 7.2 期间此类数据不会转换为正确的 UTF-8 值。
表 1. CP-1252 与 ISO-8859-2 之间不同的代码点
代码点 CP-1252 ISO-8859-2
0xB1 ± ą
0xB3 ³ ł
0xB6 ś
0xC0 À Ŕ

过程

在升级到 Rational Synergy 7.2 之前,使用非法字符检测工具:

  1. 下载检测库 db_illegal.a

    https://www.ibm.com/support/docview.wss?uid=swg27021595 下载该库。

  2. 在 Rational Synergy 7.0 或 7.1 中,启动经典 CLI 会话。
  3. 运行以下命令以装入库:ccm load –a detection_library_location 例如:ccm load -a /tmp/db_illegal.a
  4. 为非法字符检测工具定义命令:ccm define detection db_illegal_detection cmd
  5. 运行非法字符检测工具以开始扫描:ccm detection html_output_file_location 例如:ccm detection /tmp/database1.html
  6. 可选: 您可以通过添加 -a-additional 选项,后跟一个或多个十六进制值,添加自己的非法字节值集。
    注: 请勿在多个十六进制值之间包含空格。
    例如,要添加两个 Latin-2 字符,请使用命令:ccm detection –a B1B3B6C0 /tmp/database1_scan.html 该命令将检测五个非法 CP1252 字符和列出的 Latin-2 字符。

结果

扫描所需时间取决于数据库大小和系统速度。在大型数据库上,扫描通常需要数小时时间。如果可能,请在数据库不太繁忙时运行扫描。扫描为只读方式,无需关闭服务器或保护数据库。

非法字符检测工具的输出格式是 HTML,可以在浏览器中查看。每个包含命令执行期间所定义非法数据的对象都会列在头块中。单击头块以查看包含非法值的属性。将以红色突出显示非法字符。未定义的 CP1252 字符显示为用尖括号括起的其十六进制值。例如,如果遇到字符十六进制值 81,那么报告将以较大的红色字体显示“<81>”。

下一步做什么

运行非法字符检测工具之后,检查报告以查看您的数据库是否包含非法文本数据。如果包含,请检查相应 Rational Synergy 或 Change 界面中的对象及其属性值。您可能决定手动除去或更正数据,编写脚本以修复重复的错误,或者将数据保持不变而不进行进一步的编辑。

数据库升级至 Rational Synergy 7.2 期间,不是合法 CP1252 字符的任何其余字节值都将转换为前面所述的“\xNN”序列。所有其他文本数据都被假定为采用 CP1252 编码,并且会从该编码转换为 UTF-8。


反馈