Delphi 为什么我的查询返回错误的字符串类型?
根据,包含Unicode字符串(SQL Server称之为NVARCHAR)的列应声明为Delphi 为什么我的查询返回错误的字符串类型?,delphi,delphi-2010,firebird,dbexpress,Delphi,Delphi 2010,Firebird,Dbexpress,根据,包含Unicode字符串(SQL Server称之为NVARCHAR)的列应声明为VARCHAR(x)字符集Unicode\u FSS。我这样做了,但是当我用DBExpress查询表时,我得到的结果是一个TStringField,它只是ansisting,而不是我所期望的TWideStringField 如何让DBX从Unicode字符串列中获得Unicode字符串结果?对于Firebird,您唯一的选择是将整个数据库连接设置为Unicode字符集,例如utf8 这样,所有VarChar列
VARCHAR(x)字符集Unicode\u FSS
。我这样做了,但是当我用DBExpress查询表时,我得到的结果是一个TStringField,它只是ansisting,而不是我所期望的TWideStringField
如何让DBX从Unicode字符串列中获得Unicode字符串结果?对于Firebird,您唯一的选择是将整个数据库连接设置为Unicode字符集,例如utf8 这样,所有VarChar列将生成TWideStringField类型的字段。尽管在创建列时声明了特定的字符集,但字段始终是TWideStringFields 设置此选项将导致以下情况: 我现在从几个月前教Delphi时创建的一个示例项目中收集这些图像。如果是这种情况,则必须在创建任何持久字段之前设置此属性
看起来驱动程序不支持UNICODE_FSS字符集,因为我的第一个操作是创建一个新项目,设置属性,然后创建一些字段。在create database语句中,最好将整个数据库声明为utf8或驱动程序支持的其他字符集,然后在Delphi中匹配数据库字符集以避免字符串转换。对于Firebird,您唯一的选择是将整个数据库连接设置为Unicode字符集,例如utf8 这样,所有VarChar列将生成TWideStringField类型的字段。尽管在创建列时声明了特定的字符集,但字段始终是TWideStringFields 设置此选项将导致以下情况: 我现在从几个月前教Delphi时创建的一个示例项目中收集这些图像。如果是这种情况,则必须在创建任何持久字段之前设置此属性
看起来驱动程序不支持UNICODE_FSS字符集,因为我的第一个操作是创建一个新项目,设置属性,然后创建一些字段。IMHO最好在create database语句中将整个数据库声明为utf8或驱动程序支持的其他字符集,然后在Delphi中匹配数据库字符集以避免字符串转换。不知道fb驱动程序,但使用ib驱动程序(在fb数据库上)我能够在sql连接上使用参数为“ServerCharSet=UTF8”的UTF8列。对于连接,可以使用unicode或ansi,我的意思是我不能使用混合列的表。不知道情况是否仍然如此。顺便说一句,如果您正在设计数据库,请不要使用UNICODE_FSS。“UNICODE_FSS”在谷歌上的第一个成功例子是。@sertac:很好。我正在以编程的方式生成create脚本,因此我可以很容易地修复它。仍然无法解决TWideStringField问题,尽管…相关:不知道fb驱动程序,但使用ib驱动程序(在fb数据库上),我能够在sql连接上使用参数为'ServerCharSet=UTF8'的UTF8列。对于连接,可以使用unicode或ansi,我的意思是我不能使用混合列的表。不知道情况是否仍然如此。顺便说一句,如果您正在设计数据库,请不要使用UNICODE_FSS。“UNICODE_FSS”在谷歌上的第一个成功例子是。@sertac:很好。我正在以编程的方式生成create脚本,因此我可以很容易地修复它。仍然无法解决TWideStringField问题,但…相关: