UTF-8 To GB2312 functionUTF2GB(UTFStr) forDig=1tolen(UTFStr) ifmid(UTFStr,Dig,1)="%"then 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 endfunction functionConvChinese(x) A=split(mid(x,2),"%") i=0 j=0
fori=0toubound(A) A(i)=c16to2(A(i)) next
fori=0toubound(A)-1 DigS=instr(A(i),"0") Unicode="" forj=1toDigS-1 ifj=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 endfunction functionc2to16(x) i=1 fori=1tolen(x)step4 c2to16=c2to16&hex(c2to10(mid(x,i,4))) next endfunction
functionc2to10(x) c2to10=0 ifx="0"thenexitfunction i=0 fori=0tolen(x)-1 ifmid(x,len(x)-i,1)="1"thenc2to10=c2to10+2^(i) next endfunction functionc16to2(x) i=0 fori=1tolen(trim(x)) tempstr=c10to2(cint(int("&h"&mid(x,i,1)))) dowhilelen(tempstr)<4 tempstr="0"&tempstr loop c16to2=c16to2&tempstr next endfunction functionc10to2(x) mysign=sgn(x) x=abs(x) DigS=1 do ifx<2^DigSthen exitdo else DigS=DigS+1 endif loop tempnum=x
i=0 fori=DigSto1step-1 iftempnum>=2^(i-1)then tempnum=tempnum-2^(i-1) c10to2=c10to2&"1" else c10to2=c10to2&"0" endif next ifmysign=-1thenc10to2="-"&c10to2 endfunction |