mjn*_*mjn 5 migration delphi unicode interbase dbexpress
我们想要在 Delphi 2009 和 Interbase 中使用 Unicode,并发现要将字符编码从 WIN1252 切换到 UNICODE_FSS 或 UTF8,我们首先必须在所有数据模块中将 TStringField 的所有实例替换为 TWideStringField。对于大约 60 个数据模块,我们不能简单地在一个周末完成这一工作。我只能看到迁移策略的两个选项:
或者
据我所知,持久数据库字段的字段类型是在某种类注册表中注册的。我们可以使用它来让 Delphi 相信 TStringField 对于具有 UNICODE_FSS 或 UTF8 编码的 Interbase 字符列来说是可以的吗?
或者我们可以使用在这两种情况下都可以与 TStringField 一起使用的商业 dbExpress 驱动程序吗?
另请参阅我的相关问题:Delphi dbExpress 和 Interbase:UTF8 迁移步骤和风险?
更新:在所有 DFM 和 PAS 文件中将所有出现的 TStringField 替换为 TWideStringField 后,我们发现现在还需要在大约 100 个位置将 TWideStringFields 的“Size”属性值乘以四(如果我们使用 UTF8)。所以我开始悬赏寻找一种减少修复 DFM 的手动工作的方法
对 unicode 字符使用 TStringField 会给你带来麻烦,它里面会有 $00,基本上以 dbExpress 驱动程序结束字符串,因为这些驱动程序接受 P(Ansi)Char 字符串。使用 TWideStringField 在 dbExpress 中使用 PWideChar,因此驱动程序需要真正的 unicode 代码点。
恐怕没有简单的出路。