WIN1252
更改为
UTF8
。 (Firedac)。 这是使用UTF-8编码创建的PostgreSQL数据库。由于它们的大小,我们从流中加载了一些文本字段。这以前工作过,但是现在只加载了文本的第一个字符。 在更改数据库连接的Charset之前,我们拥有的代码是:
procedure TfrmTeste.LoadSqlScript_old;
var
_Stream: TStream;
begin
_Stream := qry1.CreateBlobStream(
qry1.FieldByName('Script'),
bmRead
);
try
FReportQry.Sql.LoadFromStream(_Stream);
finally
_Stream.Free;
end;
end;
当我提到的是,加载的文本仅包含原始文本的第一个字符。我试图将文本加载到A
TStringStream
以了解正在发生的事情:
procedure TfrmTeste.LoadSqlScript_new;
var
_StringStream: TStringStream;
_Stream: TStream;
begin
_StringStream := TStringStream.Create;
try
_Stream := qry1.CreateBlobStream(
qry1.FieldByName('Script'),
bmRead
);
try
_StringStream.LoadFromStream(_Stream);
_StringStream.SaveToFile('c:\tmp\test.sql');
FReportQry.Sql.LoadFromStream(_StringStream);
finally
_Stream.Free;
end;
finally
_StringStream.Free;
end;
end;
TQuery.SQL
仅具有第一个字符的文本。
delphi rio 10.3.3与Firedac.
thanks要对下面的代码进行remy适用于我的情况:
_Stream := _Qry.CreateBlobStream(_Qry.FieldByName('Script'), bmRead);
_StrStream := TStringStream.Create;
try
_StrStream.LoadFromStream(_Stream);
Query.Sql.LoadFromStream(_StrStream, TEncoding.Unicode);
finally
_Stream.Free;
_StrStream.Free;
end;