从 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 升级至 7.2 或更高版本时,该数据库中的所有文本元数据(类型和对象名、字符串和文本属性值及类似项目)都将从先前发布标识中使用的 Windows CP1252 编码转换为 R7.2 或更高版本中使用的 UTF-8 编码。
未对 Rational Synergy 数据库中所控制的文件内容进行任何更改;仅对 Informix® 或 Oracle 中存储的文本元数据进行重新编码。
在 R7.0 和 R7.1 中,Rational Synergy 期望采用 CP1252(或其 Latin-1 子集)对文本数据进行编码。但是,可能已采用其他编码方式使用未检查编码的 Classic 客户机输入一些字符。
如果在数据库升级期间在文本元数据中遇到其中任何字节值,都会将其转换为字符串:序列“\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 或更高版本之前,使用非法字符检测工具:
- 下载检测库 db_illegal.a。
从 https://www.ibm.com/support/docview.wss?uid=swg27021595 下载该库。
- 在 Rational Synergy
7.0 或 7.1 中,启动经典 CLI 会话。
- 运行以下命令以装入库:ccm
load –a detection_library_location 例如:ccm load -a /tmp/db_illegal.a
- 为非法字符检测工具定义命令:ccm define detection db_illegal_detection cmd
- 运行非法字符检测工具以开始扫描:ccm detection html_output_file_location 例如:ccm detection /tmp/database1.html
- 可选: 您可以通过添加 -a 或 -additional 选项,后跟一个或多个十六进制值,添加自己的非法字节值集。
注: 请勿在多个十六进制值之间包含空格。
例如,要添加两个 Latin-2 字符,请使用命令:ccm detection –a B1B3B6C0 /tmp/database1_scan.html 该命令将检测五个非法 CP1252 字符和列出的 Latin-2 字符。
结果
扫描所需时间取决于数据库大小和系统速度。在大型数据库上,扫描通常需要数小时时间。如果可能,请在数据库不太繁忙时运行扫描。扫描为只读方式,无需关闭服务器或保护数据库。
非法字符检测工具的输出格式是 HTML,可以在浏览器中查看。每个包含命令执行期间所定义非法数据的对象都会列在头块中。单击头块以查看包含非法值的属性。将以红色突出显示非法字符。未定义的 CP1252 字符显示为用尖括号括起的其十六进制值。例如,如果遇到字符十六进制值 81,那么报告将以较大的红色字体显示“<81>”。
下一步做什么
运行非法字符检测工具之后,检查报告以查看您的数据库是否包含非法文本数据。如果包含非法文本数据,请在相应的 Rational Synergy 或 Rational Change 界面中检查对象及其属性值。
您可以手动除去或纠正数据、编写脚本以纠正反复出现的错误,或保留数据而不进行进一步的编辑。
在数据库升级到 R7.2 或更高版本期间,不会将任何剩余的作为非法 CP1252 字符的字节值转换为先前描述的“\xNN”序列。所有其他文本数据都被假定为采用 CP1252 编码,并且会从该编码转换为 UTF-8。