关于XE10下Indy发送字符串编码的问题

Posted 耗喜天涯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于XE10下Indy发送字符串编码的问题相关的知识,希望对你有一定的参考价值。

在与硬件对接的过程中,之前用D7环境下的UDPServer.Post发送的指令,硬件可正常识别并正常显示,

后来使用到XE10,重新编译之前的源码,发现所有汉字乱码显示了;

后通过对接收数据发现,实际发送的编码有异常,而且英文与数字都正常,就汉字显示不正常,

唯一可能就是字符编码的问题了

D7环境下发送的是默认的String数据类型

XE10下发送的也同样是String类型,

要解决乱码问题,处理方法就是在XE10环境下,UDPServer.Post时,注意设置一下发送的指令编码

常规发送为:UDPServer.Post(IP,Port,Data);

在xe10下,加上编码格式: UDPServer.Post(IP,Port,Data, IndyTextEncoding(TEncoding.ANSI));

在XE10下共提供7种格式: (经测试 Default发送的指令编码与 ANSI 一样)

IndyTextEncoding(TEncoding.ANSI)

IndyTextEncoding(TEncoding.ASCII)

IndyTextEncoding(TEncoding.BigEndianUnicode)

IndyTextEncoding(TEncoding.Default)

IndyTextEncoding(TEncoding.Unicode)

IndyTextEncoding(TEncoding.UTF7)

IndyTextEncoding(TEncoding.UTF8)

以上是关于关于XE10下Indy发送字符串编码的问题的主要内容,如果未能解决你的问题,请参考以下文章

Delphi XE10 IdTCPClient和IdTCPServer 通讯编码规则写法(Indy 10)(编码乱码)

Delphi XE10 IdTCPClient和IdTCPServer 通讯编码规则写法(Indy 10)(编码乱码)

Delphi XE IdTCPClient1 和 IdTCPServer1 数据的发送与接收(indy10)

ascii' 编解码器无法编码字符 u'\xe2

UnicodeEncodeError:'ascii'编解码器无法在位置 7 编码字符 u'\xe9':序数不在范围内(128)[重复]

delphi indy10 无法接收中文