<% 1、'UTF转GB---将UTF8编码文字转换为GB编码文字 function UTF2GB(UTFStr) for Dig=1tolen(UTFStr) '如果UTF8编码文字以%开头则进行转换 ifmid(UTFStr,Dig,1)="%"then 'UTF8编码文字大于8则转换为汉字 iflen(UTFStr) >= Dig+8then GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9)) Dig=Dig+8 else GBStr=GBStr &mid(UTFStr,Dig,1) endif else GBStr=GBStr &mid(UTFStr,Dig,1) endif next UTF2GB=GBStr end function 'UTF8编码文字将转换为汉字 function ConvChinese(x) A=split(mid(x,2),"%") i=0 j=0 for i=0toubound(A) A(i)=c16to2(A(i)) next for i=0toubound(A)-1 DigS=instr(A(i),"0") Unicode="" for j=1to DigS-1 if j=1then A(i)=right(A(i),len(A(i))-DigS) Unicode=Unicode & A(i) else i=i+1 A(i)=right(A(i),len(A(i))-2) Unicode=Unicode & A(i) endif next iflen(c2to16(Unicode))=4then ConvChinese=ConvChinese & chrw(int("&H"& c2to16(Unicode))) else ConvChinese=ConvChinese &chr(int("&H"& c2to16(Unicode))) endif next end function '二进制代码转换为十六进制代码 function c2to16(x) i=1 for i=1tolen(x) step 4 c2to16=c2to16 &hex(c2to10(mid(x,i,4))) next end function '二进制代码转换为十进制代码 function c2to10(x) c2to10=0 if x="0"thenexitfunction i=0 for i=0tolen(x) -1 ifmid(x,len(x)-i,1)="1"then c2to10=c2to10+2^(i) next end function '十六进制代码转换为二进制代码 function c16to2(x) i=0 for i=1tolen(trim(x)) tempstr= c10to2(cint(int("&h"&mid(x,i,1)))) dowhilelen(tempstr)<4 tempstr="0"& tempstr loop c16to2=c16to2 & tempstr next end function '十进制代码转换为二进制代码 function c10to2(x) mysign=sgn(x) x=abs(x) DigS=1 do if x<2^DigS then exitdo else DigS=DigS+1 endif loop tempnum=x i=0 for i=DigS to1 step-1 if tempnum>=2^(i-1) then tempnum=tempnum-2^(i-1) c10to2=c10to2 &"1" else c10to2=c10to2 &"0" endif next if mysign=-1then c10to2="-"& c10to2 end function 2、'GB转UTF8--将GB编码文字转换为UTF8编码文字 Function toUTF8(szInput) Dim wch, uch, szRet Dim x Dim nAsc, nAsc2, nAsc3 '如果输入参数为空,则退出函数 If szInput =""Then toUTF8 = szInput ExitFunction EndIf '开始转换 For x =1ToLen(szInput) '利用mid函数分拆GB编码文字 wch =Mid(szInput, x, 1) '利用ascW函数返回每一个GB编码文字的Unicode字符代码 '注:asc函数返回的是ANSI 字符代码,注意区别 nAsc = AscW(wch) If nAsc <0Then nAsc = nAsc +65536 If (nAsc And&HFF80) =0Then szRet = szRet & wch Else If (nAsc And&HF000) =0Then uch ="%"&Hex(((nAsc 2^6)) Or&HC0) &Hex(nAsc And&H3F Or&H80) szRet = szRet & uch Else 'GB编码文字的Unicode字符代码在0800 - FFFF之间采用三字节模版 uch ="%"&Hex((nAsc 2^12) Or&HE0) &"%"& _ Hex((nAsc 2^6) And&H3F Or&H80) &"%"& _ Hex(nAsc And&H3F Or&H80) szRet = szRet & uch EndIf EndIf Next toUTF8 = szRet End Function 3、'GB转unicode---将GB编码文字转换为unicode编码文字 function chinese2unicode(Str) dim i dim Str_one dim Str_unicode if(isnull(Str)) then exitfunction endif for i=1tolen(Str) Str_one=Mid(Str,i,1) Str_unicode=Str_unicode&chr(38) Str_unicode=Str_unicode&chr(35) Str_unicode=Str_unicode&chr(120) Str_unicode=Str_unicode&Hex(ascw(Str_one)) Str_unicode=Str_unicode&chr(59) next chinese2unicode=Str_unicode end function 4、'URL解码 Function URLDecode(enStr) dim deStr dim c,i,v deStr="" for i=1tolen(enStr) c=Mid(enStr,i,1) if c="%"then v=eval("&h"+Mid(enStr,i+1,2)) if v<128then deStr=deStr&chr(v) i=i+2 else if isvalidhex(mid(enstr,i,3)) then if isvalidhex(mid(enstr,i+3,3)) then v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2)) deStr=deStr&chr(v) i=i+5 else v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1))))) deStr=deStr&chr(v) i=i+3 endif else destr=destr&c endif endif else if c="+"then deStr=deStr&"" else deStr=deStr&c endif endif next URLDecode=deStr end function '判断是否为有效的十六进制代码 function isvalidhex(str) dim c isvalidhex=true str=ucase(str) iflen(str)<>3then isvalidhex=false:exitfunction ifleft(str,1)<>"%"then isvalidhex=false:exitfunction c=mid(str,2,1) ifnot (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exitfunction c=mid(str,3,1) ifnot (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exitfunction end function %>