首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Indy 9 TCP客户端文本编码

Indy 9 TCP客户端文本编码
EN

Stack Overflow用户
提问于 2014-12-29 15:52:17
回答 2查看 2K关注 0票数 0

我有一个使用Indy 9的Delphi 7应用程序,它将一个TIdTCPClient连接到使用Indy10.5的Delphi XE2应用程序中的一个TIdTCPServer

要在Indy 10中将TIdTCPClient中的文本编码设置为UTF-8,我可以使用以下方法:

代码语言:javascript
复制
TCPClient.IOHandler.DefStringEncoding := TIdTextEncoding.UTF8;

如何在Indy 9中将文本编码设置为UTF-8,因为在DefStringEncoding中没有IOHandler属性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-30 18:43:39

Indy 9不支持编码,也不支持Unicode的Delphi。Indy 9中的所有内容都假定/仅基于AnsiString。字符串以-is方式传输,就好像它们是原始字节数组一样。

因此,不要使用ANSI通过连接发送AnsiString数据。您可以以UTF-8的形式发送/接收它。您只需手动对AnsiString数据进行编码/解码,仅此而已。Indy 9将发送一个UTF-8编码的AnsiString作为是,并读取一个UTF-8编码的AnsiString作为.然后,您可以根据周围代码中的需要,将AnsiString数据编码/解码到UTF-8。

例如,您的Indy 9客户端可以这样做:

代码语言:javascript
复制
IdTCPClient1.WriteLn(UTF8Encode('Some Unicode String Here'));
...
S := UTF8Decode(IdTCPClient1.ReadLn);

然后您的Indy 10服务器可以这样做:

代码语言:javascript
复制
AContext.Connection.IOHandler.DefStringEncoding := TIdTextEncoding.UTF8;
...
S := AContext.Connection.IOHandler.ReadLn;
...
AContext.Connection.IOHandler.WriteLn(...);
票数 0
EN

Stack Overflow用户

发布于 2014-12-29 19:13:04

我还没有找到在Indy 9中设置编码UTF8的方法,然后决定如下:知道Indy 9 TCPClient中的默认编码是ANSI,我在TCPServer应用程序中将编码配置为ANSI,在从TCPserver到TCPClient的通信之前将任何UTF8字符串转换为ANSI,并将其全部解析。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27691988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档