gpt4 book ai didi

delphi - 为什么我的查询返回错误的字符串类型?

转载 作者:行者123 更新时间:2023-12-02 12:19:29 24 4
gpt4 key购买 nike

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

如何让 DBX 从 Unicode 字符串列中提供 Unicode 字符串结果?

最佳答案

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

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

Char set at connection level

设置此项,将导致以下结果:

TWideStringField

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

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

关于delphi - 为什么我的查询返回错误的字符串类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com