如何从数据库中加载带有DBConnection的TStringStream设置为UTF-8 CharSet?

问题描述 投票:0回答:1
我们正在将我们项目的数据库连接设置从

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;

delphi utf-8 stringstream firedac tstream
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.