在Domino的系统开发过程中,我们往往要通过url来进行传参,传递参数给表单或者代理,假如浏览器请求的url带有参数,在交给服务器前服务器会对其进行编码(不知道这样理解对不对),像一些特殊符号,空格、%、汉字都会被编码成类似%XX这样的格式,我们在表单或者代理中如果要取得原来的字符串就必须要进行解码。
Domino自带提供了一个query_string_decoded的系统域用来获得解码过的字符串,但是在使用中我们仍然发现有些字符通过这个域无法获得真正的原来编码前的字符串,所以我们可以采用自己解码的方式,办法是用query_string获得未解码的字符串,自己写一个函数来解码。下面就是一个解码函数,个人觉得效果很不错,在项目中使用没有问题。
Code
Function LSDecode(inString As String) As String
inString=Replace(inString,"+"," ")
Dim L As String
Dim M As String
Dim R As String
Dim P As Integer
Dim TP As Integer
Dim fnDecode1 As String
Dim rstr As String
Dim TempStr As String
If Instr(inString,"%")>0 Then
TempStr=inString
Do While Instr(TempStr,"%")>0
P=Instr(TempStr,"%")
L=Left(TempStr,P-1)
M=Mid(TempStr,P+1,5)
If Cint("&H"+Left(M,1))<10 Then
M=Left(M,2)
If M="0A" Or M="0D" Then
If M="0D" Then
rstr=rstr+L+"<br>"
End If
Else
rstr=rstr+L+Chr(Clng("&H"+M))
End If
TP=(P+2)
Else
M=Left(M,2)+Right(M,2)
rstr=rstr+L+Chr(Clng("&H"+M))
TP=(P+5)
End If
R=Right(TempStr,Len(TempStr)-TP)
TempStr=R
Loop
LSDecode=rstr+TempStr
Else
LSDecode = inString
End If
End Function