使用 FireDac 查询会带来一些 "asian" 个字符……为什么?

Query with FireDac bringing some "asian" characters... why?

我在使用 FDQuery (FireDac) 时遇到了一些问题,我真的不知道哪里出了问题。我以前在 Delphi 7 + ZeosMySQL 上有相同的代码,但没有发生这个问题。

现在,在 Delphi 10 Seattle + FireDac 上,完全相同的代码带来了一些 'chinese' 个字符。这是我的例子:

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

谢谢

很确定这是一个 ANSI/UNICODE 问题。

Delphi 7 是 ANSI(= 无法支持 "chinese" 字符),10 Berlin 是 UNICODE。

尝试使用

qryAux.FieldByName('Type').AsANSIString;

看看这是否显示了您期望的文本。

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