目前,我们的数据库使用 Win1252 作为唯一的字符编码。我们很快将不得不在数据库表中支持 Unicode,这意味着我们必须为四个数据库和大约 80 个在内部 24/7 环境中运行的 Delphi 应用程序执行此迁移。对于 Delphi 应用程序是否有将数据库迁移到 UTF-8(或 UNICODE_FSS)的建议?下面列出了一些问题。非常感谢您的回答!
- 是否有工具可以通过转储数据、使用 UNICODE_FSS 或 UTF-8 重新创建数据库并重新加载数据来帮助迁移现有数据库(大小在 250 MB 和 2 GB 之间,没有 Blob 字段)?
- Delphi 2009、dbExpress 和 Interbase 7.5是否存在与 Unicode 字符集相关的已知问题?
- 您会建议先将数据库升级到Interbase 2009吗?(此升级已计划,但优先级不高)
- 我们可以简单地迁移数据库并且 Delphi 将自动处理 Unicode 字符集,还是我们也必须更改每个 Datamodule(dfm 和源代码)中的所有字符字段类型?
- 您建议采用哪种策略与现有应用程序的正常开发和维护并行进行迁移?该应用程序在内部运行,因此开发和数据库管理在内部完成。
更新:来自 InterBase 论坛主题:InterBase 中的 Unicode 数据库 - 真的吗?(这不是我的主题,但它表明 InterBase XE 中仍然存在一些问题)。
以下是我提交的一些报告: QC#92867 - 仅当视图包含联合并且使用 ClientDataSet 时,来自视图的字符串字段为空白。在我的一些报告中发现这是缺少数据,这些报告不再有效。
QC#91494 - IB 字符列数据字符字段(例如:Char(1))在通过存储过程检索时用空白填充。测试失败 - 例如:如果 Active = "Y"。我大量使用带有表单的存储过程,但这些都不起作用。
QC#91355 - IBSqlMonitor 失败。IBSqlMonitor 的输出有些乱码,使得这个工具毫无用处。(所以,连我的铲子都坏了!)
未报告 - TClientDataSet 中的持久字段对于 TWideString 失败。
其他相关QC条目:
QC#94455 SQL Unicode 字符类型失败(InterBase XE)