编码不同的字符不能直接相连显示【已解决】
本帖最后由 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)
前排留名。 _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那是哪门子二进制…… 回复 3# 帆船
打印当然可以,打印也不可以的话,那是autoit的bug了。arraydisplay显示不出,是这个udf写的有问题。 回复 4# haijie1223
修复一下哇,最近用的多。 回复 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)
回复 6# 帆船
似乎明白了原因,编码不同,造成的不能显示。
0x4500是小编码,'test'是ansi编码,所以不能直接相连显示。
因此应该用 BinaryToString('0x' & $array,2)。
或者:
Local $array = [['0x45', '']]
$array=BinaryToString($array)
==========================
同理,如果0x0045,那么就是大编码,应该用BinaryToString('0x' & $array,3)
不是bug,是我自己知识面太窄,一时没有注意到这个问题。
感谢帮忙测试。 回复 7# haijie1223
啊,还真是这么回事……本来不清楚大编码小编码编码是怎么回事的,学习了 ansi不被支持是什么鬼? 学习学习。
页:
[1]