Lotus关于URL中文字符串编码与解码(URL中文参数问题解决办法)
Published by admin on 07月 31, 2010
Lotus 在开发BS应用时,最简单的是通过URL来传值,但是如果传的参数是中文的,那参数传过去会变成以Unicode的编码
本文描述如何处理URL中文参数传参问题
背景:在网页开发中经常需要使用Javascript进行编码传递参数以避免显示乱码的问题。而在Lotus后台代码中缺少对URL解析的支持。在表单设计中可以使用公式来解决该问题。而在触发的代理中却不可避免里仍然需要通过内置的函数而非公式来解决这一问题。
原理:将URL字符串特殊的字符进行编码并对汉字等其他国际字符进行UNICODE编码。编码部分的字符采用%-ASCII编码(2位十六进制)与%u-Unicode编码(4位十六进制)。解码再将上述编码的内容重新恢复为原来的字符串形式。
函数:HTMLEncode
参数:需要编码的文本
功能:对字符串进行安全的编码以用于正常的传递与后续的解析处理。
======================================================================
Function HTMLEncode(Byval plainText As String)As String
‘Javascript escape 采用的Unicode编码
Dim index,length As Integer
Dim StringPiece As String ‘字符串中每个字符
Dim StringPieceUnicode As Long ‘字符串中每个字符对应编码
Dim Encode As String
Dim ReserveString As String
length=Len(plainText)
ReserveString=“*+-./@_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
Encode=“”
For index=1 To length
StringPiece=Mid(plainText,index,1)
StringPieceUnicode=Uni(StringPiece)
If StringPieceUnicode<256 Then
If Instr(1,ReserveString,StringPiece)>=1 Then
Encode=Encode+StringPiece
Else
Encode=Encode+“%”+Hex(StringPieceUnicode)
End If
Else
Encode=Encode+”%u”+Hex(StringPieceUnicode)
End If
Next
HTMLEncode=Encode
End Function
======================================================================
函数:getHex
参数:十六制数字串
功能:对十六制串进行处理以得到相应的十制数。
Function getHex(Byval hexText As String)As Long
Dim index,length As Integer
Dim getValue As Long
Dim HexPiece As String
Dim ReserveHex As String
Dim Pos As Integer
hexText= Ucase(Trim(hexText) )
getValue=0
length=Len(hexText)
ReserveHex=”0123456789ABCDEF”
For index=1 To length
HexPiece=Mid(hexText,index,1)
Pos=Instr(1,ReserveHex,HexPiece) ‘1~16
If Pos<1 Or Pos>16 Then
getHex=getValue
Exit Function
End If
If getValue>0 Then getValue=getValue*16
getValue=getValue+(Pos-1)
Next
getHex=getValue
End Function
======================================================================
Pages: 1 2

Add A Comment