Lotus教程、Java教程、Java虚拟机、Java软件综合开发社区

Lotus、Domino、Java、C#、Web、数据库综合开发教程、资料社区

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