Mysql 使用FireDac进行查询,带来一些;亚洲";人物。。。为什么?

Mysql 使用FireDac进行查询,带来一些;亚洲";人物。。。为什么?,mysql,delphi,firedac,Mysql,Delphi,Firedac,我在使用FDQuery(FireDac)时遇到了一些问题,我真的不知道哪里出了问题。我曾经在Delphi7+ZeosMySQL上有相同的代码,但这个问题没有发生 现在,在Delphi10西雅图+FireDac上,完全相同的代码会带来一些“中文”字符。下面是我的例子: 我的表(使用MySQL 4.1): 我在按钮上编写了以下简单代码,以在标签上显示结果: qryAux.Close; qryAux.SQL.Clear; qryAux.SQL.Text := 'show columns f

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

现在,在Delphi10西雅图+FireDac上,完全相同的代码会带来一些“中文”字符。下面是我的例子:

我的表(使用MySQL 4.1):

我在按钮上编写了以下简单代码,以在标签上显示结果:

  qryAux.Close;
  qryAux.SQL.Clear;
  qryAux.SQL.Text := 'show columns from tabdollar';
  qryAux.Open;

  Label1.Caption := qryAux.FieldByName('Type').AsString;
这段代码在Delphi7上正确显示了列的类型或名称。在Delphi10西雅图,它显示了一些不同的字符(可能是中文或日语,我真的不知道)

有人知道为什么会这样吗?FireDac查询中是否有一些属性可以正确地输入字符


谢谢

非常确定这是一个ANSI/UNICODE问题

Delphi7是ANSI(=不支持“中文”字符),10是UNICODE

试用

qryAux.FieldByName('Type').AsANSIString

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


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

我在MySQL 5.x上使用XE5和FireDac,没有任何问题。可能是Unicode问题支持取决于您的delphi版本。谢谢您的回答Jayde,但我仍然不明白这个问题。正如我所说,我使用的是Delphi10西雅图版本23.0.20618.2753。数据库(MySQL 4.1)和o.s.(Windows)的unicode是相同的。如果您在数据库中只使用
latin1\u swedish\u ci
排序规则,请使用
CharacterSet=latin1
连接参数。这很有效!非常感谢亚当,它工作得很好!
  qryAux.Close;
  qryAux.SQL.Clear;
  qryAux.SQL.Text := 'show columns from tabdollar';
  qryAux.Open;

  Label1.Caption := qryAux.FieldByName('Type').AsString;