RAD 服务器 Delphi - 使用 savetostream 和 loadfromstream 不起作用,因为 Json 转换后元音发生了变异

RAD Server Delphi - using savetostream und loadfromstream does not work because of mutated vowels after Json conversion

我尝试通过 RadServer IIS 包和 Delphi 客户端与 EMSEndpoint 交换数据。 我尝试的事情对我来说看起来很简单,但我现在无法完成。

在包中有一个指向 MSSql 服务器的 TFDConnection。 TFDQuery 与该连接相连。 使用此代码,我创建了 JSON 响应(服务器端):

var lStream: TStringStream := TStringStream.create;

    FDQuery.SaveToStream(lStream,sfJSON);
    AResponse.Body.SetStream(lStream,'application/json' ,True);

使用该代码,我尝试将数据集加载到 TFDMemtable(客户端):

 lstrstream: TStringStream := TStringStream.create(EMSBackendEndpoint.Response.Content);
 aMemtable.LoadFromStream(lstrstream, sfJSON);

Memtable 说 [FireDac][Stan]-719 invalid JSON storage format 怎么可能呢?我知道问题出在哪里,我的流中有 äöü 符号,但是当我将它从一个组件加载到另一个组件时,它应该可以工作,不是吗? 有什么建议我可以尝试吗?到目前为止我尝试了什么:

JSON 最常使用 UTF-8 进行交换,但默认情况下 TStringStream 不会 在 Windows 上使用 UTF-8,仅在 Posix 系统上。尝试使用 TStringStream.Create(..., TEncoding.UTF8) 强制使用 UTF-8。

这假定 FDQuery.SaveToStream() 使用 UTF-8 保存,aMemtable.LoadFromStream() 使用 UTF-8 加载,否则您仍然会遇到编码不匹配的情况。