使用 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 ...
我在使用 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 ...