我在使用FDQuery(FireDac)时遇到了一些麻烦,我真的无法解决问题。我曾经在Delphi 7 + ZeosMySQL上使用相同的代码,但这个问题没有发生。
现在,在Delphi 10 Seattle + FireDac上,完全相同的代码带来了一些“中国人”。字符。这是我的榜样:
我的表(使用MySQL 4.1):
CREATE TABLE `tabdollar` (
`CODIGO` INT(11) NULL DEFAULT NULL,
`DOLLAR` FLOAT(16,2) NOT NULL DEFAULT '0.00',
`EMPRESA_USU` VARCHAR(30) NOT NULL DEFAULT '',
INDEX `CODIGO` (`CODIGO`))
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM;
我在一个按钮上写了这个简单的代码,以便在标签上显示结果:
qryAux.Close;
qryAux.SQL.Clear;
qryAux.SQL.Text := 'show columns from tabdollar';
qryAux.Open;
Label1.Caption := qryAux.FieldByName('Type').AsString;
这段代码在Delphi 7上正确显示列类型或名称。在Delphi 10 Seattle,它显示了一些不同的角色(可能是中文或日文,我真的不知道)。
有谁知道为什么会这样? FireDac Query上是否有一些属性可以带来正确的字符?
由于
答案 0 :(得分:2)
很确定这是ANSI / UNICODE问题。
Delphi 7是ANSI(=不能支持“中文”字符),10柏林是UNICODE。
尝试使用
qryAux.FieldByName( '类型')AsANSIString;
并查看是否显示您期望的文字。
如果确实如此,我还没有解决您的问题,但您可以尝试将数据转换为UNICODE ......