zldfsz 发表于 2012-3-14 10:19:33

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

本帖最后由 zldfsz 于 2012-3-14 15:12 编辑

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

请问如何转换为正常数据
Local $var = ControlGetText("", "", "Scintilla1")
MsgBox(32,"返回值",$var)
问题已解决,请看 12楼http://www.autoitx.com/images/common/back.gif
MsgBox(0,0,BinaryToString(StringToBinary(ControlGetText("", "", "Scintilla1"), 2), 1))感谢楼下各位解答

my788522 发表于 2012-3-14 13:36:01

本帖最后由 my788522 于 2012-3-14 13:38 编辑

Local $var = ControlGetText("", "", "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

zldfsz 发表于 2012-3-14 13:40:23

回复 2# my788522

非常感谢,佩服,怎么知道这样做呢

my788522 发表于 2012-3-14 13:45:18

这个直接读出的是UTF小编码 要转换回去
具体是在scite的配置文件中有设置编码的地方
原版的scite可直接读出数据 而中文化的是改过编码的

zldfsz 发表于 2012-3-14 13:48:49

本帖最后由 zldfsz 于 2012-3-14 13:51 编辑

回复 4# my788522
问题解决了,谢谢

afan 发表于 2012-3-14 14:05:43

Local $var = ControlGetText("", "", "Scintilla1")

$bin=StringToBinary ($var,2) ...
my788522 发表于 2012-3-14 13:36 http://www.autoitx.com/images/common/back.gif


    学习了~ 不过测试某些中文仍为乱码

zldfsz 发表于 2012-3-14 14:13:03

学习了~ 不过测试某些中文仍为乱码
afan 发表于 2012-3-14 14:05 http://www.autoitx.com/images/common/back.gif

回复 4# my788522


的确如此

my788522 发表于 2012-3-14 14:13:30

对了 中文也得转换一下.....

Duvet 发表于 2012-3-14 14:19:20

本帖最后由 Duvet 于 2012-3-14 14:20 编辑

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

MsgBox(0, "Result", BinaryToString(StringToBinary(ControlGetText("", "", "Scintilla1"), 2), 4))

my788522 发表于 2012-3-14 14:22:20

楼上正解 我整复杂了

zldfsz 发表于 2012-3-14 14:22:37

对了 中文也得转换一下.....
my788522 发表于 2012-3-14 14:13 http://www.autoitx.com/images/common/back.gif
可是为什么有些不转也正常呢

zldfsz 发表于 2012-3-14 14:28:30

實際上就是 UTF-16(LE) 轉 UTF-8,別把問題想難了
Duvet 发表于 2012-3-14 14:19 http://www.autoitx.com/images/common/back.gif


    可是中文都没显示

Duvet 发表于 2012-3-14 14:50:51

回复 12# zldfsz


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

MsgBox(0,0,BinaryToString(StringToBinary(ControlGetText("", "", "Scintilla1"), 2), 1))

zldfsz 发表于 2012-3-14 14:55:19

谢谢,完美解决了,今天不能再评分了,明天给你评上,非常感谢

nmgwddj 发表于 2012-3-14 15:00:21

2楼的代码更让人容易理解原理。
页: [1] 2
查看完整版本: 【已解决】ControlGetText读取SciTE得到乱码,怎么转换为正常数据