使用FireDac进行查询会带来一些"亚洲"人物......为什么?

时间:2016-09-13 14:50:58

标签: mysql delphi firedac

我在使用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上是否有一些属性可以带来正确的字符?

由于

1 个答案:

答案 0 :(得分:2)

很确定这是ANSI / UNICODE问题。

Delphi 7是ANSI(=不能支持“中文”字符),10柏林是UNICODE。

尝试使用

qryAux.FieldByName( '类型')AsANSIString;

并查看是否显示您期望的文字。

如果确实如此,我还没有解决您的问题,但您可以尝试将数据转换为UNICODE ......