Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 为什么我的查询返回错误的字符串类型?_Delphi_Delphi 2010_Firebird_Dbexpress - Fatal编程技术网

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

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列

根据,包含Unicode字符串(SQL Server称之为NVARCHAR)的列应声明为
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问题,但…相关: