找回密码
 加入
搜索
查看: 5707|回复: 15

[AU3基础] 【已解决】ControlGetText读取SciTE得到乱码,怎么转换为正常数据

 火.. [复制链接]
发表于 2012-3-14 10:19:33 | 显示全部楼层 |阅读模式
本帖最后由 zldfsz 于 2012-3-14 15:12 编辑

我用ControlGetText读取SciTE编辑框里的内容,读出来是乱码,如图

请问如何转换为正常数据
Local $var = ControlGetText("[CLASS:SciTEWindow]", "", "Scintilla1")
MsgBox(32,"返回值",$var)

问题已解决,请看 12楼
MsgBox(0,0,BinaryToString(StringToBinary(ControlGetText("[CLASS:SciTEWindow]", "", "Scintilla1"), 2), 1))
感谢楼下各位解答

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-3-14 13:36:01 | 显示全部楼层
本帖最后由 my788522 于 2012-3-14 13:38 编辑

Local $var = ControlGetText("[CLASS:SciTEWindow]", "", "Scintilla1")

$bin=StringToBinary ($var,2)
MsgBox(32,$bin,BYTEtoHEX($bin))

Func BYTEtoHEX($str)
        $str = StringReplace($str, "0x", "")
        $fanhui = ""
        For $i = 1 To StringLen($str) Step 4
                $strzi = "0x" & StringMid($str, $i, 4)
                $code = BinaryToString($strzi)
                $fanhui = $fanhui & $code
        Next
        Return $fanhui
EndFunc   ;==>BYTEtoHEX

评分

参与人数 2金钱 +60 贡献 +10 收起 理由
lixiaolong + 20 学习了~
zldfsz + 40 + 10 谢谢帮忙

查看全部评分

 楼主| 发表于 2012-3-14 13:40:23 | 显示全部楼层
回复 2# my788522

非常感谢,佩服,怎么知道这样做呢
发表于 2012-3-14 13:45:18 | 显示全部楼层
这个直接读出的是UTF小编码 要转换回去
具体是在scite的配置文件中有设置编码的地方
原版的scite可直接读出数据 而中文化的是改过编码的

评分

参与人数 2金钱 +30 贡献 +9 收起 理由
afan + 30 +
zldfsz + 9

查看全部评分

 楼主| 发表于 2012-3-14 13:48:49 | 显示全部楼层
本帖最后由 zldfsz 于 2012-3-14 13:51 编辑

回复 4# my788522
问题解决了,谢谢
发表于 2012-3-14 14:05:43 | 显示全部楼层
Local $var = ControlGetText("[CLASS:SciTEWindow]", "", "Scintilla1")

$bin=StringToBinary ($var,2) ...
my788522 发表于 2012-3-14 13:36



    学习了~ 不过测试某些中文仍为乱码
 楼主| 发表于 2012-3-14 14:13:03 | 显示全部楼层
学习了~ 不过测试某些中文仍为乱码
afan 发表于 2012-3-14 14:05


回复 4# my788522


的确如此
发表于 2012-3-14 14:13:30 | 显示全部楼层
对了 中文也得转换一下.....
发表于 2012-3-14 14:19:20 | 显示全部楼层
本帖最后由 Duvet 于 2012-3-14 14:20 编辑

實際上就是 UTF-16(LE) 轉 UTF-8,別把問題想難了

MsgBox(0, "Result", BinaryToString(StringToBinary(ControlGetText("[CLASS:SciTEWindow]", "", "Scintilla1"), 2), 4))
发表于 2012-3-14 14:22:20 | 显示全部楼层
楼上正解 我整复杂了
 楼主| 发表于 2012-3-14 14:22:37 | 显示全部楼层
对了 中文也得转换一下.....
my788522 发表于 2012-3-14 14:13

可是为什么有些不转也正常呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-3-14 14:28:30 | 显示全部楼层
實際上就是 UTF-16(LE) 轉 UTF-8,別把問題想難了
Duvet 发表于 2012-3-14 14:19



    可是中文都没显示
发表于 2012-3-14 14:50:51 | 显示全部楼层
回复 12# zldfsz


跟文件編碼有關係,如果是ANSI編碼,用下面這一行便可解決

MsgBox(0,0,BinaryToString(StringToBinary(ControlGetText("[CLASS:SciTEWindow]", "", "Scintilla1"), 2), 1))

评分

参与人数 5金钱 +150 收起 理由
Ycxw2008 + 40 高手.我爱你
zldfsz + 40 +
chenronting + 30 不错。谢谢。!
zch11230 + 10 谢谢
afan + 30

查看全部评分

 楼主| 发表于 2012-3-14 14:55:19 | 显示全部楼层
谢谢,完美解决了,今天不能再评分了,明天给你评上,非常感谢
发表于 2012-3-14 15:00:21 | 显示全部楼层
2楼的代码更让人容易理解原理。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-30 19:31 , Processed in 0.085982 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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