Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TIdTCPClient.IOHandler.Write(TStream)无法发送Big5?_Delphi_Indy_Indy10_Delphi 10.3 Rio - Fatal编程技术网

Delphi TIdTCPClient.IOHandler.Write(TStream)无法发送Big5?

Delphi TIdTCPClient.IOHandler.Write(TStream)无法发送Big5?,delphi,indy,indy10,delphi-10.3-rio,Delphi,Indy,Indy10,Delphi 10.3 Rio,通过TCPClient.IOHandler.WriteStmMsg;,消息被传送到前端。英语没问题,但Big5无法发送,为什么 TStringStream,程序已添加。。。TCPClient.IOHandler.DefStringEncoding:=IndyTextEncoding\u UTF8 代码如下: if not TCPClient.Connected then TCPClient.Connect; deviceToken := '6aa5bfcfe731ab29b260fab38a43

通过TCPClient.IOHandler.WriteStmMsg;,消息被传送到前端。英语没问题,但Big5无法发送,为什么

TStringStream,程序已添加。。。TCPClient.IOHandler.DefStringEncoding:=IndyTextEncoding\u UTF8

代码如下:

if not TCPClient.Connected then
TCPClient.Connect;
deviceToken :=
'6aa5bfcfe731ab29b260fab38a43f1e1abac0de3d6e8e0bc5f4b89c422938e8f';
MensajeEnviar := edtMensaje.Text;

strMessage := Get_Msg(deviceToken, Get_PayLoad(MensajeEnviar, 1,
'default'));

StmMsg := TStringStream.Create(strMessage);

StmMsg.Seek(0, soBeginning);
TCPClient.IOHandler.Write(StmMsg);

Big5不是一种语言。这是一种用于中文的字节编码

TIdIOHandler.DefStringEncoding属性仅适用于字符串操作,而不适用于流操作。TIdIOHandler.WriteTStream方法按原样写入流的内容。因此,您有责任确保流的内容事先正确编码

但是,您正在调用的TStringStream构造函数使用TEncoding.Default作为流的字节编码。在Windows1上,TEncoding.Default表示运行程序的用户的默认ANSI字符集。ANSI字符集不适用于中文文本,并且会丢失数据

1:在非Windows平台上,TEncoding。默认使用UTF-8

您需要使用TEncoding.UTF8代替流的字节编码,例如:

stmsg:=TStringStream.CreatestrMessage,TEncoding.UTF8; 或者,您可以完全删除流,只需使用TIdIOHandler.WriteString方法,然后使用TIdIOHandler.DefStringEncoding属性,例如:

TCPClient.IOHandler.writestressage;