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

在从 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 和 7.1 中,Rational Synergy 希望使用 CP1252(或其 Latin-1 子集)对文本数据进行编码。但是,可能已使用其他编码输入了某些字符,也许是使用其中不检查编码的经典客户机。

在 CP1252 中未定义以下十六进制字节值:
  • 0x81
  • 0x8D
  • 0x8F
  • 0x90
  • 0x9D
如果数据库升级期间在文本元数据中遇到以下任何字节值,那么会将其转换为序列“\x”后跟十六进制值作为字符串。例如,如果升级期间遇到字节值 0x81,那么会将其转换为字符串“\x81”。升级期间遇到的每个此类字节值会记录在升级日志中,并且此类情况的列表会存储在数据库中以供将来检索。
非法字节值 转换的字符串字面值
0x81 “\x81”
0x8D “\x8D”
0x8F “\x8F”
0x90 “\x90”
0x9D “\x9D”
缺省情况下,该工具用于扫描和报告表中记录的任何字节值。如果数据库中的用户已使用除了 Windows CP1252 或 ISO Latin-1 之外的编码运行经典客户机,那么您必须识别在 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。


反馈