DELPHI INDY - 找不到激活 UTF8 的参数 encoding/decoding

DELPHI INDY - Can not find parameter to activate UTF8 encoding/decoding

我正在使用 Delphi 10.3 并创建了一个 TIdTCPServer 和一个客户端。 我发现像 ÅÄÖ 这样的 Unicode 字符在发送时被改变了。

ContexClient.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
ContexClient.Connection.IOHandler.WriteLn('abcÅÄÖ');

在上面的代码中,我试图用 DefStringEncoding 属性 修复它,但编译器没有找到 IndyTextEncoding_UTF8.

我不知道如何让它工作。

有什么想法吗?

Indy 的默认编码是 US-ASCII。这可以在运行时使用 Indy 的 IdGlobal 单元中的 GIdDefaultTextEncoding 变量进行更改。例如,您可以将其设置为 encUTF8

这就是您看到 non-ASCII 个字符被更改的原因。使用 TIdIOHandler.DefStringEncoding 属性 是一种解决方案。 IndyTextEncoding_UTF8IdGlobal 单元中声明。确保该单位已添加到您的 uses 子句中。

TIdIOHandler.WriteLn() 本身也有一个可选的 AByteEncoding 输入参数。如果是nil,则使用DefStringEncoding。如果那也是 nil,则使用 GIdDefaultTextEncoding