[已解决]AU3二进制转中文字符有法实现吗?
在用TCPRecv或UDPRECV做信息传递时,中文显示不完整,能否把二进制转成中文来实现?发送 二进制
接受 二进制 转 中文
[ 本帖最后由 jycel 于 2009-4-21 12:20 编辑 ] 可以,实际上,一年前我就这样做了。
关于字符串转换,帮助里面有。
但是你得注意一个问题,发送的二进制最好带有标识进行判断。不然可能得到很多虚假的包。这一点在处于外网尤为严重。 原帖由 thesnow 于 2009-4-20 22:13 发表 http://autoitx.com/images/common/back.gif
可以,实际上,一年前我就这样做了。
关于字符串转换,帮助里面有。
但是你得注意一个问题,发送的二进制最好带有标识进行判断。不然可能得到很多虚假的包。这一点在处于外网尤为严重。
帮助中未找到相关函数,只有字符串转换成其它的,没有转换成字符串的! StringToBinary, BinaryToString 发送消息
将字符串(中文)转为2进制
接收消息
将2进制转换成字符串(中文)
未能解决问题!发送英文都正常接收,中文就只显不完整 _StringToHex(StringToBinary("试试",2))
[ 本帖最后由 ddx13 于 2009-4-21 13:11 编辑 ] 以帮助文件带的示例改为二进制发送/接收为例,自己对照一下代码。我这里可以正常接收中文。
SERVER部分:
$recv = TCPRecv($ConnectedSocket, 2048)
改为
$recv = TCPRecv($ConnectedSocket, 2048, 1)
If $recv <> "" Then GUICtrlSetData($edit, $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))
改为
If $recv <> "" Then
$recv = BinaryToString($recv, 4)
GUICtrlSetData($edit, $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))
EndIf
CLIENT部分:
TCPSend($ConnectedSocket, $szData)
之前加入一行
$szData = StringToBinary($szData, 4) 我估计,你没改TCPRecv的二进制接收标志。
顺便说下,转成UTF8编码是为了在兼容和长度之间取得平衡。 原帖由 sensel 于 2009-4-21 13:18 发表 http://autoitx.com/images/common/back.gif
我估计,你没改TCPRecv的二进制接收标志。
顺便说下,转成UTF8编码是为了在兼容和长度之间取得平衡。
原来这里没有添加标志
$szData = StringToBinary($szData, 4)这里没有改标志!
我以为 $recv = TCPRecv($Socket, 2048, 1)这里就已经成转成2进制了!发送出去也是$recv这个值
TCPRECV后面都添加了的试没对!
谢谢指点哈!
[ 本帖最后由 jycel 于 2009-4-21 14:58 编辑 ]
页:
[1]