【发布时间】:2010-02-20 15:35:36
【问题描述】:
目前,我们的数据库使用 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 论坛主题:Unicode Databases in InterBase - Really?(这不是我的主题,但它表明 InterBase XE 中仍然存在一些问题)。
以下是我提交的一些报告: QC#92867 - 字符串字段为空 仅当视图来自视图 包括一个联合,并且当使用一个 客户端数据集。这被发现为 我的一些报告缺少数据, 不再起作用。
QC#91494 - IB字符列数据 字符字段(例如:Char(1))是 检索时用空格填充 通过一个存储过程。测试失败 - 例如:如果活动 = “Y”。我大量使用带有表单的存储过程 这些都不起作用。
QC#91355 - IBSqlMonitor 失败。这 IBSqlMonitor 的输出有点 乱码使该工具无用。 (所以, 连我的铲子都坏了!)
未报告 - 中的持久字段 TWideString 的 TClientDataSet 失败。
其他相关QC条目:
QC#94455SQL Unicode 字符类型失败(InterBase XE)
【问题讨论】:
标签: delphi utf-8 delphi-2009 interbase dbexpress