中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 05:21
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]VBS调用IE进UTF8论坛,中文编码无法登陆
可打印版本  771 / 10
第1楼 9zhmke 发表于 2009-07-08 12:37
中级用户 发帖 99 积分 355
[已解决]VBS调用IE进UTF8论坛,中文编码无法登陆
自己做了个登论坛小号的程序如下(用户和密码正确):
Set regwsh=createobject("wscript.shell")
Dim Wsh,cookies
Set Wsh = WScript.CreateObject("WScript.Shell")
cookies=regwsh.regread ("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies")
regwsh.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies","C:\\Documents and Settings\\All Users\\Cookies\\我是马甲"
Wsh.Run "IEXPLORE.EXE http://bbs.dp168.com/logging.php?action=login&loginsubmit=true&cookietime=0&username=鎴戞槸椹敳&password=15239776",,False
wscript.sleep 3000
regwsh.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Cookies",cookies
Set Wsh=NoThing
WScript.quit


本程序利用IE或其它浏览器启动时只检查一次cookies的原理来实现多个IE窗口同时登录多个用户功能。其中下面这句的乱码是被转换过后的用户名“我是马甲”:
Wsh.Run "IEXPLORE.EXE http://bbs.dp168.com/logging.php?action=login&loginsubmit=true&cookietime=0&username=鎴戞槸椹敳&password=15239776",,False

使用了批处理生成vbs只能生成ansi编码。而这次的论坛要求使用utf8编码(一些论坛是),所以当户名是中文时老是出错,英文用户名时不会出错。怎样能把ANSI编码的转成utf8呢?vbs只能使用ANSI代码,一用UTF8就出错,临时解决方案是用一个ANSI文本、一个UTF8文本,在调用IE的字符串里使用转换过后的UTF8的字符串,但这样做任然有很多中文出现问号,使过程无法完成,比如用户名为“一个会员”时,转成UTF8是“涓€涓細鍛?”,这个问号的出现使用户无法登陆,有没有好办法呢?

[ Last edited by 9zhmke on 2009-7-8 at 15:16 ]
第2楼 slore 发表于 2009-07-08 13:11
铂金会员 发帖 2,478 积分 5,212
UTF就直接用UTF编码传就行了
第3楼 9zhmke 发表于 2009-07-08 13:19
中级用户 发帖 99 积分 355
这是两个不相干的问题,如果不改注册表里的cookies,是不可以同时登两个以上的号的,不信你在本论坛试就知道了。

...你句子里这个后面的%??是怎么来的呢?

[ Last edited by 9zhmke on 2009-7-8 at 13:21 ]
第4楼 slore 发表于 2009-07-08 13:43
铂金会员 发帖 2,478 积分 5,212
你没有看我的标题么?
第5楼 9zhmke 发表于 2009-07-08 13:45
中级用户 发帖 99 积分 355
看了,vbs的文件如果用utf文件根本就不能执行。不知道怎么才能在里面弄成utf8。如果可以转换成三字节格式的%数据就好了。

[ Last edited by 9zhmke on 2009-7-8 at 14:10 ]
第6楼 slore 发表于 2009-07-08 14:11
铂金会员 发帖 2,478 积分 5,212
记事本用过没?

简单方法用专用播放器。。。

要用系统的方法就新建记事本,写 我是马甲

然后另存为 utf8编码名字叫1.txt

没用16进制查看器怎么看呢?
新建一个文本文档写000000000000000
UTF8编码1个汉字转3个字节,你打3(记事本UTF编码头)+12个0

然后保存为2.txt

然后打开CMD

运行:
fc /b 1.txt 2.txt
会得到2列信息,一列是1的编码,一列30(0的编码)


所以。。。。

还是推荐找个专门工具转吧。。。

其实貌似。。。
很多网页你提交都可以看到。。。比如吧,类似google
你查找下"我是马甲"看下IE的URL就知道了
第7楼 slore 发表于 2009-07-08 14:42
铂金会员 发帖 2,478 积分 5,212
专用播放器。。。
专用编码转换器。。。
第8楼 9zhmke 发表于 2009-07-08 14:46
中级用户 发帖 99 积分 355
Originally posted by slore at 2009-7-8 02:42 PM:
专用编码转换器。。。


不会全手工操作吧? 我的目的是根据一个用户名密码清单来生成这么几百个vbs。

如果一个直接在地址栏用javascript:alert(encodeURI('我是马甲')就可以查出来,多了还不清楚怎么弄。继续查资料中....

[ Last edited by 9zhmke on 2009-7-8 at 14:59 ]
第9楼 slore 发表于 2009-07-08 15:07
铂金会员 发帖 2,478 积分 5,212
那就自己写呗
MsgBox UTF8Encode("我是马甲")

Public Function UTF8Encode(szString)
Dim szChar
Dim szTemp
Dim szCode
Dim szHex
Dim szBin
Dim iCount1
Dim iCount2
Dim iStrLen1
Dim iStrLen2
Dim lResult
Dim lAscVal
szString = Trim(szString)
iStrLen1 = Len(szString)
For iCount1 = 1 To iStrLen1
szChar = Mid(szString, iCount1, 1)
lAscVal = AscW(szChar)
If lAscVal >= &H0 And lAscVal <= &HFF Then
If
(lAscVal >= &H30 And lAscVal <= &H39) or _
(
lAscVal >= &H41 And lAscVal <= &H5A) or _
(
lAscVal >= &H61 And lAscVal <= &H7A) Then
szCode = szCode & szChar
Else

szCode = szCode & "%" & Hex(AscW(szChar))
End If
Else

szHex = Hex(AscW(szChar))
iStrLen2 = Len(szHex)
For iCount2 = 1 To iStrLen2
szChar = Mid(szHex, iCount2, 1)
szBin = szBin & Mid("0000;0001;0010;0011;0100;0101;0110;0111;1000;1001;1010;1011;1100;1101;1110;1111;", CLng("&H" & szChar) * 5 + 1, 4)
Next
szTemp = "1110" & Left(szBin, 4) & "10" & Mid(szBin, 5, 6) & "10" & Right(szBin, 6)
For iCount2 = 1 To 24
If Mid(szTemp, iCount2, 1) = "1" Then
lResult = lResult + 1 * 2 ^ (24 - iCount2)
Else: lResult = lResult + 0 * 2 ^ (24 - iCount2)
End If
Next

szTemp = Hex(lResult)
szCode = szCode & "%" & Left(szTemp, 2) & "%" & Mid(szTemp, 3, 2) & "%" & Right(szTemp, 2)
End If
szBin = vbNullString
lResult = 0
Next
UTF8Encode = szCode
End Function
第10楼 9zhmke 发表于 2009-07-08 15:14
中级用户 发帖 99 积分 355
刚试了可以了,太谢谢了,就是要这个效果呢
第11楼 9zhmke 发表于 2009-07-08 16:13
中级用户 发帖 99 积分 355
把生成程序一起发上来,给大家省去调试的麻烦:
其中涉及到的LUNTAN2.TXT是马甲存放文件,格式为用户名+空格+密码,空格为任意个但是用户名和密码中不能有空格

[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023