<%
'목적: UTF-8로 인코딩된 중국어 문자를 영어 및 숫자와 호환되는 GB2312 코드로 변환합니다.
'저작권: 원본이지만 실제로는 다른 알고리즘의 일부를 참조합니다.
'사용법: Response.write UTF2GB("%E9%83%BD%E5%B8%82%E6%83%85%E7%B7%A3 %E6%98%9F%E5%BA%A7")
기능 UTF2GB(UTFStr)
Dig=1에서 len(UTFStr)까지
mid(UTFStr,Dig,1)="%"인 경우
len(UTFStr) >= Dig+8이면
GBStr=GBStr & Conv중국어(mid(UTFStr,Dig,9))
파기=파기+8
또 다른
GBStr=GBStr & mid(UTFStr,Dig,1)
종료하면
또 다른
GBStr=GBStr & mid(UTFStr,Dig,1)
종료하면
다음
UTF2GB=GBStr
종료 함수
함수 Conv중국어(x)
A=분할(mid(x,2),"%")
나는=0
i=0에서 ubound(A)까지의 경우
j=0
A(i)=c16to2(A(i))
i=0에서 ubound(A)-1까지의
다음
DigS=instr(A(i),"0")
유니코드=""
j=1 ~ DigS-1의 경우
j=1이면
A(i)=right(A(i),len(A(i))-DigS)
유니코드=유니코드 & A(i)
또 다른
나=나+1
A(i)=right(A(i),len(A(i))-2)
유니코드=유니코드 & A(i)
종료하면
다음
len(c2to16(Unicode))=4이면 다음
Conv중국어=Conv중국어 & chrw(int("&H" & c2to16(유니코드)))
또 다른
Conv중국어=Conv중국어 & chr(int("&H" & c2to16(유니코드)))
종료하면
다음
끝 기능
기능 c2to16(x)
나는=1
i=1부터 len(x)까지 4단계
c2to16=c2to16 & hex(c2to10(mid(x,i,4)))
다음
끝 함수
함수 c2to10(x)
c2to10=0
x="0"이면 함수를 종료합니다.
나는=0
i= 0에서 len(x) -1까지
mid(x,len(x)-i,1)="1"이면 c2to10=c2to10+2^(i)
다음
끝 기능
기능 c16to2(x)
나는=0
i=1에서 len(trim(x))까지
tempstr= c10to2(cint(int("&h" & mid(x,i,1))))
len(tempstr)<4 동안 수행
tempstr="0" & tempstr
고리
c16to2=c16to2 & 임시 직원
다음
끝 기능
기능 c10to2(x)
mysign=sgn(x)
x=절대값(x)
발굴=1
하다
x<2^DigS이면
나가다
또 다른
디그S=디그S+1
종료하면
고리
임시 숫자=x
i=0
i=DigS ~ 1 step-1의 경우
임시수>=2^(i-1)이면
임시번호=임시번호-2^(i-1)
c10to2=c10to2 & "1"
또 다른
c10to2=c10to2 & "0"
종료하면
다음
mysign=-1이면 c10to2="-" & c10to2
함수 종료
%>