请登录[¤ 阳光论坛 ¤]参与讨论


阳光宝宝
90

 □ 主题: Asp utf-8转gb2312及urlencode函数
 □ 内容: 1楼

      今天遇到自己上网拼命找资料了。无数个urlencode可以供使用,还可以找到很多版本的utf-8转gb的函数。但是都不是很好用。特别在遇到中文的时候。 
       
      下面的函数该是您收藏的。 
       
      <%  
      -----------------------------------  
      ''utf-8 -> gb2312  
      ''-----------------------------------  
      function UTF2GB(UTFStr)  
      UTFStr=replace(UTFStr,"+","%20")  
      for Dig=1 to len(UTFStr)  
      if mid(UTFStr,Dig,1)="%" then  
      if LCase(mid(UTFStr,Dig+1,1))="e" then  
      GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))  
      Dig=Dig+8  
      else  
      GBStr=GBStr & chr(eval("&h"+mid(UTFStr,Dig+1,2)))  
      Dig=Dig+2  
      end if  
      else  
      GBStr=GBStr & mid(UTFStr,Dig,1)  
      end if  
      next  
      UTF2GB=GBStr  
      end function 
       
      function ConvChinese(x)  
      A=split(mid(x,2),"%")  
      i=0  
      j=0 
       
      for i=0 to ubound(A)  
      A(i)=c16to2(A(i))  
      next 
       
      for i=0 to ubound(A)-1  
      DigS=instr(A(i),"0")  
      Unicode=""  
      for j=1 to DigS-1  
      if j=1 then  
      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)  
      end if  
      next 
       
      if len(c2to16(Unicode))=4 then  
      ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))  
      else  
      ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))  
      end if  
      next  
      end function  
      function c2to16(x)  
      i=1  
      for i=1 to len(x) step 4  
      c2to16=c2to16 & hex(c2to10(mid(x,i,4)))  
      next ''www.dwww.cn  
      end function 
       
      function c2to10(x)  
      c2to10=0  
      if x="0" then exit function  
      i=0  
      for i= 0 to len(x) -1  
      if mid(x,len(x)-i,1)="1" then c2to10=c2to10+2^(i)  
      next  
      end function  
      function c16to2(x)  
      i=0  
      for i=1 to len(trim(x))  
      tempstr= c10to2(cint(int("&h" & mid(x,i,1))))  
      do while len(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  
      exit do  
      else  
      DigS=DigS+1  
      end if  
      loop  
      tempnum=x 
       
      i=0  
      for i=DigS to 1 step-1  
      if tempnum>=2^(i-1) then  
      tempnum=tempnum-2^(i-1)  
      c10to2=c10to2 & "1"  
      else  
      c10to2=c10to2 & "0"  
      end if  
      next  
      if mysign=-1 then c10to2="-" & c10to2  
      end function 
       
      ------------------------------------ 
       
      Function URLDecode(enStr)  
      dim deStr  
      dim c,i,v  
      deStr=""  
      for i=1 to len(enStr)  
      c=Mid(enStr,i,1)  
      if c="%" then  
      v=eval("&h"+Mid(enStr,i+1,2))  
      if v<128 then  
      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  
      end if  
      else  
      destr=destr&c  
      end if  
      end if  
      else  
      if c="+" then  
      deStr=deStr&" "  
      else  
      deStr=deStr&c  
      end if  
      end if  
      next  
      URLDecode=deStr  
      end function 
       
      function isvalidhex(str)  
      dim c  
      isvalidhex=true  
      str=ucase(str)  
      if len(str)<>3 then isvalidhex=false:exit function  
      if left(str,1)<>"%" then isvalidhex=false:exit function  
      c=mid(str,2,1)  
      if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function  
      c=mid(str,3,1)  
      if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function  
      end function  
      %> 
       
      
——
      
争分夺秒背单词 → lightning  n.闪电,闪电放电
 □ 发帖时间:2011-6-14|16:24:16 |回复|返回|

 页次:1/1页 每页10  本主题贴数0 分页: 1


你还没有登录论坛,所以不能发表你的意见。你可以选择:

1、我已注册,我要

2、我还没注册,我要

3、太麻烦了,我还是

Go Top

Copyright by(C)2003-2015 http://abc.sy578.cn