1.txt 45678 | 12-23-23-123-
2.txt的45678在最后一行。
下标越界: '[number: 0]'
如果在2.txt里面查到不到1.txt的scode代码,应该在1.txt里面读取一行新的scode代码,然后再2.txt里面继续查找啊。。。
<%@LANGUAGE="VBScript" CODEPAGE="65001"%>
<!--#include file="aspJSON1.17.asp"-->
<meta charset="utf-8" />
<%
Function EnCodeY(sText,sCode)'当参数传入
Dim arrCode(),i,flag,strResult
arrData = split(sText, "-")
cntData = UBOUND(arrData) - 1
cntCode = Len(sCode) - 1
Redim arrCode(cntCode)
For i = 0 To cntCode
arrCode(i) = Mid(sCode, i + 1, 1)
Next
flag = 0
strResult = ""
For i = 0 To cntData
strResult = strResult & CHR(Cint(arrData(i)) XOR ASC(arrCode(flag)))
IF flag = cntCode Then
flag = 0
Else
flag = flag + 1
End IF
Next
EnCodeY = strResult
End Function
function readText(path,charset)'读文件
set ts=server.CreateObject("adodb.stream")
ts.charset=charset'内容编码
ts.mode=3'读写模式
ts.type=2'文本模式
ts.open
ts.LoadFromFile path
readText=ts.readtext
ts.close:set ts=nothing
end function
function writeText(path,charset,text)'写文件
set ts=server.CreateObject("adodb.stream")
ts.mode=3'写写模式
ts.type=2'文本模式
ts.open
ts.charset=charset'内容编码
ts.WriteText text,1
ts.SaveToFile path,2
ts.close:set ts=nothing
end function
function findCode(v,arr)'查找开头数字一样的code值
dim i,l,arrCode
l=ubound(arr)
for i=0 to l
arrCode=split(arr(i)," | ")
if arrCode(0)=v then
findCode=arrCode(1)
exit function
end if
next
end function
function doDecode(path1,pathcode,pathrst)'path1:要解码的文件物理路径 pathcode:code文件物理路径 pathrst:解码保存文件物理路径
dim arrA,arrCode,l,i,s,scode,arr
'============
arrA=split(replace(readText(path1,"gb2312"),chr(13),""),chr(10))'注意如果要解密的字符不存在1.txt里面注意修改这里,下面的code同理
arrCode=split(replace(readText(pathcode,"gb2312"),chr(13),""),chr(10))
s=""
l=ubound(arrA)
for i=0 to l
arr=split(arrA(i)," | ")
scode=findCode(arr(0),arrCode)
if scode="" then
response.Write arr(0)&"找不到code代码<br>"
else
if s<>"" then s=s&chr(13)&chr(10)
s=s&arr(0)&" | "&EnCodeY(arr(1),scode)'如果不需要前缀id,去掉arr(0)&" | "&
end if
next
writeText pathrst,"gb2312",s
end function
doDecode server.MapPath("1.txt"),server.MapPath("2.txt"),server.MapPath("3.txt")
%>
解码完毕,<a href='3.txt' target='_blank'>点击查看解码文件</a>
这句先删除,我这里测试忘记删了,你没删除会出错,除非你有这个asp文件
<!--#include file="aspJSON1.17.asp"-->
越界在哪行?你的格式要注意波,一定要是和你上个问题说的一样
要解码的内容为下面这种,不能出现空行
73628 | 89-69-10-94-4-1-6-76-91-5-87-95-85-
73628 | 89-69-10-94-4-1-6-76-91-5-87-95-85-
。。。。
scode文件也不能出现空行,每行内容必须存在“空格|空格”内容,不存在split会出错越界
这个hi来捣乱的 | 啊啊啊
73628 | hw9s535xv4elaje
。。。。
下面是改过的代码,防止查找findCode,doDecode越界的
<%@LANGUAGE="VBScript" CODEPAGE="65001"%>
<meta charset="utf-8" />
<%
Function EnCodeY(sText,sCode)'当参数传入
Dim arrCode(),i,flag,strResult
arrData = split(sText, "-")
cntData = UBOUND(arrData) - 1
cntCode = Len(sCode) - 1
Redim arrCode(cntCode)
For i = 0 To cntCode
arrCode(i) = Mid(sCode, i + 1, 1)
Next
flag = 0
strResult = ""
For i = 0 To cntData
strResult = strResult & CHR(Cint(arrData(i)) XOR ASC(arrCode(flag)))
IF flag = cntCode Then
flag = 0
Else
flag = flag + 1
End IF
Next
EnCodeY = strResult
End Function
function readText(path,charset)'读文件
set ts=server.CreateObject("adodb.stream")
ts.charset=charset'内容编码
ts.mode=3'读写模式
ts.type=2'文本模式
ts.open
ts.LoadFromFile path
readText=ts.readtext
ts.close:set ts=nothing
end function
function writeText(path,charset,text)'写文件
set ts=server.CreateObject("adodb.stream")
ts.mode=3'写写模式
ts.type=2'文本模式
ts.open
ts.charset=charset'内容编码
ts.WriteText text,1
ts.SaveToFile path,2
ts.close:set ts=nothing
end function
function findCode(v,arr)'查找开头数字一样的code值
dim i,l,arrCode
l=ubound(arr)
for i=0 to l
if arr(i)<>"" and instr(arr(i)," | "))<>0 then'非空行并且包含 |
arrCode=split(arr(i)," | ")
if arrCode(0)=v then
findCode=arrCode(1)
exit function
end if
end if
next
end function
function doDecode(path1,pathcode,pathrst)'path1:要解码的文件物理路径 pathcode:code文件物理路径 pathrst:解码保存文件物理路径
dim arrA,arrCode,l,i,s,scode,arr
arrA=split(replace(readText(path1,"gb2312"),chr(13),""),chr(10))
arrCode=split(replace(readText(pathcode,"gb2312"),chr(13),""),chr(10))
s=""
l=ubound(arrA)
for i=0 to l
if trim(arrA(i))<>"" and instr(arrA(i)," | "))<>0 then'非空行并且包含 |
arr=split(arrA(i)," | ")
scode=findCode(arr(0),arrCode)
if scode="" then
response.Write arr(0)&"找不到code代码<br>"
else
if s<>"" then s=s&chr(13)&chr(10)
s=s&arr(0)&" | "&EnCodeY(arr(1),scode)'如果不需要前缀id,去掉arr(0)&" | "&
end if
else
response.Write arrA(i)&"为空或者没有分隔符号“ | ”<br>"
end if
next
writeText pathrst,"gb2312",s
end function
doDecode server.MapPath("1.txt"),server.MapPath("2.txt"),server.MapPath("3.txt")
%>
解码完毕,<a href='3.txt' target='_blank'>点击查看解码文件</a>
Microsoft VBScript 编译器错误 错误 '800a03f9'
缺少 'Then'
/s/s.asp,行 57
if arr(i)<>"" and instr(arr(i)," | "))<>0 then'?в? |
大哥。又变这样了?我里面的内容 就是这样的。没有多余的空格。73628 | 89-69-10- 这是1.txt 2.txt是1666355 | d5lgn9die4ems2m
连个多余的空格都没有,下一行只是scode和数字不一样!!!。
73628 | 89-69-10-94-4-1-6-76-91-5-87-95-85-
73628 | 89-69-10-94-4-1-6-76-91-5-87-95-85-
。。。。