如何从数据库中加载带有dbConnection的tstringstream设置为utf8 charset?

问题描述 投票:0回答:0
我们将项目的数据库连接设置从WIN1252更改为UTF8。 (Firedac)。 这是使用UTF8编码创建的PostgreSQL数据库;

由于它们的大小,我们从流中加载了一些文本字段。 this之前正在工作,但是现在,只有文本中的第一个字符被加载。

在更改数据库连接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;

我提到,加载的文本仅包含原始文本的第一个字符。 我试图将文本加载到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.

任何提示?

提前提前!

tothank to Remy,代码bellow适用于我的情况。

_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;

delphi utf-8 firedac tstream
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.