【发布时间】:2012-08-30 00:04:34
【问题描述】:
我有一个 TDBGrid 链接到一个 TDataSource,后面有一个 TFibDataSet。在数据集的 OnCalcFields 上,我尝试添加字符串“Russisch (русский)”。
procedure TForm1.pFIBDataSet1CalcFields(DataSet: TDataSet);
begin
DataSource1.DataSet.FieldByName('Language').AsString := ('Russisch (русский)');
问题是在网格中结果显示为 :Russisch(????????)
DataSource1.DataSet.FieldByName('Language').AsWideString :=('Russisch (русский)');
结果相同
FibDataBase 组件的 ConnectParams.Charset 设置为 UTF-8。我还设置了 DBParams 值lc_ctype=UTF8。
我在这里做错了什么?
LE:Delphi XE, Firebird and UTF8 - 这并不能解决我的问题。
LE1:问题仅出现在计算字段上。实时数据“Russisch (русский)”正确显示。
【问题讨论】:
-
这种情况是否仅发生在计算字段或实时数据中?
-
我现在做了一个测试,它只发生在计算字段上。如果实时数据是“Russisch (русский)”,则正确显示。
-
我目前无法访问 Delphi XE。查看
AsString的定义。是AnsiString吗? -
我尝试将其设为 AsWideString,结果是一样的
-
如果您使用持久性字段,请确保将其定义为 T(FIB)WideStringField 字段而不是 TStringField。
标签: delphi delphi-xe firebird2.5 tdbgrid fibplus