tryhi 发表于 2011-3-15 12:30:25

【已解决】奇怪的事情:一条注释,导致运行结果不同

本帖最后由 tryhi 于 2011-3-15 21:16 编辑

代码一:
;阿
$high = StringToBinary("一")
MsgBox(0, 0, $high)



代码二:
$high = StringToBinary("一")
MsgBox(0, 0, $high)


其运行结果居然完全不同,代码一的结果是“0xD2BB”,代码二的结果是“0x3F”,不知原因何在。
版本为:3361汉化版,测试系统为XP-SP3


现在发现注释“哦”不会出现这个问题,并且不要用“一”好像也没有问题




我觉得应该就像15楼A版所说的那样吧 15# afan

kn007 发表于 2011-3-15 12:36:37

代码一:



代码二:


其运行结果居然完全不同,不知原因何在
tryhi 发表于 2011-3-15 12:30 http://www.autoitx.com/images/common/back.gif
结果完全一样,哪里不同啊?
都是 “0xD2” 还有 “”

happytc 发表于 2011-3-15 12:37:25

眼花了吧,那里不同了

tryhi 发表于 2011-3-15 12:41:36

回复 2# kn007

麻烦前辈再测试一下,我已将代码改为最简,我的测试结果已经测试环境在顶楼

tryhi 发表于 2011-3-15 12:41:55

回复 3# happytc

麻烦再测试一下,帖子已修改

republican 发表于 2011-3-15 12:49:34

一个是ANSI一个是UTF-8.

tryhi 发表于 2011-3-15 12:52:42

回复 6# republican

你测试也是这样是吧
那我们给它加上参数,强制转为UTF-8;阿
$high = StringToBinary("一",4)
MsgBox(0, 0, $high)但加注释与不加注释仍然结果不相同

happytc 发表于 2011-3-15 12:56:01

回复 5# tryhi

因文件里有中文字符,这个函数自动转为$high = StringToBinary("一", 4)了。
默认ANSI本来是取不到中文“一”的Binary的,是这个函数的一个bug

tryhi 发表于 2011-3-15 12:59:00

回复tryhi

因文件里有中文字符,这个函数自动转为$high = StringToBinary("一", 4)了。
默认ANSI本来 ...
happytc 发表于 2011-3-15 12:56 http://www.autoitx.com/images/common/back.gif

现在发现注释“哦”不会出现这个问题,并且不要用“一”好像也没有问题

3mile 发表于 2011-3-15 13:38:06

这个问题以前也发现过.
没作过深入,座等高人回答.

clshuai 发表于 2011-3-15 15:29:23

我测试了一下,还真有这个问题哦

小A 发表于 2011-3-15 16:36:43

测试了一下,还真有这个问题

papapa314 发表于 2011-3-15 17:06:30

测试结果同上。
之前我还发现:
$user=_IEGetObjById($oIE,"user")
$user.value="小学"
会出现乱码,但另外一些中文字符比如“大”,“家”就不会有乱码。
也等待高手解答

kn007 发表于 2011-3-15 17:16:22

回复kn007

麻烦前辈再测试一下,我已将代码改为最简,我的测试结果已经测试环境在顶楼
tryhi 发表于 2011-3-15 12:41 http://www.autoitx.com/images/common/back.gif

看图吧,我这边没这问题

afan 发表于 2011-3-15 17:38:43

的确是很奇怪的问题,不过这肯定不是Au3的问题,而是Windows保存文件的问题。
这里测试的脚本,是在保存后才执行的结果,而在保存时,Windows会自动转码Ansi>UTF-8,且进行了错误的转换。这就造成了脚本执行时StringToBinary根本不是同一字符。

做个测试:
打开记事本,键入一个“一”,保存。此时并无异样,关闭文本重新打开一次,你会发现“一”变成了方块。
再做个测试:
打开记事本,键入一个“一二”,保存。关闭文本重新打开,一切正常。
页: [1] 2
查看完整版本: 【已解决】奇怪的事情:一条注释,导致运行结果不同