1

根据官方 Firebird 文档,包含 Unicode 字符串(SQL Server 称为 NVARCHAR)的列应声明为VARCHAR(x) CHARACTER SET UNICODE_FSS. 所以我这样做了,但是当我使用 DBExpress 查询表时,我得到的结果是一个 TStringField,它只是 AnsiString,而不是我期望的 TWideStringField。

如何让 DBX 从 Unicode 字符串列给我一个 Unicode 字符串结果?

4

1 回答 1

10

使用 Firebird,您唯一的选择是将整个数据库连接设置为 Unicode 字符集,例如 utf8。

这样,所有 VarChar 列都将生成 TWideStringField 类型的字段。尽管在创建列时声明了特定的字符集,但这些字段将始终为 TWideStringFields。

连接级别的字符集

设置它,将导致:

TWideStringField

我现在从几个月前教 Delphi 时创建的示例项目中收集这些图像。如果是这种情况,您必须在创建任何持久字段之前设置此属性。

看起来驱动程序不支持 UNICODE_FSS 字符集,因为我的第一个操作是创建一个新项目,设置属性,然后创建一些字段。恕我直言,最好在创建数据库语句中将整个数据库声明为 utf8 或驱动程序支持的其他字符集,然后在 Delphi 中匹配数据库字符集以避免字符串转换。

于 2011-03-23T00:14:15.067 回答