haijie1223 发表于 2017-3-25 10:35:14

编码不同的字符不能直接相连显示【已解决】

本帖最后由 haijie1223 于 2017-3-25 13:40 编辑

_ArrayDisplay的bug见过不止一次,真是蛋疼。。。
#NoTrayIcon
#RequireAdmin
#include <Array.au3>
Local $array = [['4500', '']]
_ArrayDisplay($array, $array)
$array = BinaryToString('0x' & $array)
$array = 'test'
_ArrayDisplay($array, $array)

ze0702 发表于 2017-3-25 10:36:44

前排留名。

帆船 发表于 2017-3-25 12:26:55

_ArrayDisplay表示这锅我不背……
#NoTrayIcon
#RequireAdmin
#include <Array.au3>
Local $Array = [["4500", ""]]
_ArrayDisplay($Array)
Local $Binary = Binary("0x" & $Array)
ConsoleWrite(AscW("E") & @TAB & IsBinary($Binary) & @CRLF)
$Array = String(BinaryToString($Binary))
;~ $Array = ChrW($Binary)
$Array = String("Test")
ConsoleWrite($Array & @CRLF & $Array & @CRLF)
MsgBox(0, $Array, $Array)
_ArrayDisplay($Array)

ConsoleWrite也是打印不出来的,MsgBox才可以……
0x4500那是哪门子二进制……

haijie1223 发表于 2017-3-25 12:32:25

回复 3# 帆船


    打印当然可以,打印也不可以的话,那是autoit的bug了。arraydisplay显示不出,是这个udf写的有问题。

heroxianf 发表于 2017-3-25 12:35:23

回复 4# haijie1223


    修复一下哇,最近用的多。

帆船 发表于 2017-3-25 13:21:29

回复 4# haijie1223
哦,不对,我刚才说错了,MsgBox也是不能连在一起显示的!如图:

#NoTrayIcon
#RequireAdmin
#include <Array.au3>
Local $Array = [["4500", ""]]
_ArrayDisplay($Array)
Local $Binary = Binary("0x" & $Array)
ConsoleWrite(AscW("E") & @TAB & IsBinary($Binary) & @CRLF)
$Array = String(BinaryToString($Binary))
;~ $Array = ChrW($Binary)
$Array = String("Test")
ConsoleWrite($Array & @CRLF & $Array & @CRLF)
MsgBox(0, $Array & $Array, $Array & $Array)
_ArrayDisplay($Array)

haijie1223 发表于 2017-3-25 13:38:44

回复 6# 帆船


    似乎明白了原因,编码不同,造成的不能显示。
0x4500是小编码,'test'是ansi编码,所以不能直接相连显示。
因此应该用 BinaryToString('0x' & $array,2)。
或者:
Local $array = [['0x45', '']]
$array=BinaryToString($array)
==========================
同理,如果0x0045,那么就是大编码,应该用BinaryToString('0x' & $array,3)
不是bug,是我自己知识面太窄,一时没有注意到这个问题。
感谢帮忙测试。

帆船 发表于 2017-3-25 13:46:08

回复 7# haijie1223
啊,还真是这么回事……本来不清楚大编码小编码编码是怎么回事的,学习了

black丶shark 发表于 2017-3-31 08:53:43

ansi不被支持是什么鬼?

zhouzc88 发表于 2017-3-31 12:07:23

学习学习。
页: [1]
查看完整版本: 编码不同的字符不能直接相连显示【已解决】