找回密码
 加入
搜索
查看: 3025|回复: 8

[已解决]AU3二进制转中文字符有法实现吗?

[复制链接]
发表于 2009-4-20 21:19:44 | 显示全部楼层 |阅读模式
在用TCPRecv或UDPRECV做信息传递时,中文显示不完整,能否把二进制转成中文来实现?
发送 二进制
接受 二进制 转 中文

[ 本帖最后由 jycel 于 2009-4-21 12:20 编辑 ]
发表于 2009-4-20 22:13:33 | 显示全部楼层
可以,实际上,一年前我就这样做了。
关于字符串转换,帮助里面有。
但是你得注意一个问题,发送的二进制最好带有标识进行判断。不然可能得到很多虚假的包。这一点在处于外网尤为严重。
 楼主| 发表于 2009-4-20 22:42:36 | 显示全部楼层
原帖由 thesnow 于 2009-4-20 22:13 发表
可以,实际上,一年前我就这样做了。
关于字符串转换,帮助里面有。
但是你得注意一个问题,发送的二进制最好带有标识进行判断。不然可能得到很多虚假的包。这一点在处于外网尤为严重。

帮助中未找到相关函数,只有字符串转换成其它的,没有转换成字符串的!
发表于 2009-4-21 01:29:01 | 显示全部楼层
StringToBinary, BinaryToString
 楼主| 发表于 2009-4-21 12:02:00 | 显示全部楼层
发送消息
将字符串(中文)转为2进制
接收消息
将2进制转换成字符串(中文)
未能解决问题!发送英文都正常接收,中文就只显不完整
发表于 2009-4-21 13:10:23 | 显示全部楼层
_StringToHex(StringToBinary("试试",2))

[ 本帖最后由 ddx13 于 2009-4-21 13:11 编辑 ]
发表于 2009-4-21 13:12:08 | 显示全部楼层
以帮助文件带的示例改为二进制发送/接收为例,自己对照一下代码。我这里可以正常接收中文。

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)

评分

参与人数 1金钱 +10 收起 理由
jycel + 10 帮助别人也等于提高自己!

查看全部评分

发表于 2009-4-21 13:18:37 | 显示全部楼层
我估计,你没改TCPRecv的二进制接收标志。
顺便说下,转成UTF8编码是为了在兼容和长度之间取得平衡。
 楼主| 发表于 2009-4-21 14:55:42 | 显示全部楼层
原帖由 sensel 于 2009-4-21 13:18 发表
我估计,你没改TCPRecv的二进制接收标志。
顺便说下,转成UTF8编码是为了在兼容和长度之间取得平衡。

原来这里没有添加标志
$szData = StringToBinary($szData, 4)这里没有改标志!
我以为        $recv = TCPRecv($Socket, 2048, 1)这里就已经成转成2进制了!发送出去也是$recv这个值
TCPRECV后面都添加了的试没对!
谢谢指点哈!

[ 本帖最后由 jycel 于 2009-4-21 14:58 编辑 ]
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 21:44 , Processed in 0.078458 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表