DELPHI INDY-找不到激活UTF8编码/解码的参数

问题描述

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

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

在上面的代码中,我尝试使用DefStringEncoding属性进行修复,但是编译器找不到IndyTextEncoding_UTF8

我不知道该怎么做才能使它工作。

有什么主意吗?

解决方法

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

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

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