<%
Objectif : convertir les caractères chinois codés UTF-8 en code GB2312, compatible avec l'anglais et les chiffres.
'Copyright : Bien qu'il soit original, il fait en fait référence à certains algorithmes d'autres.
'Utilisation : Response.write UTF2GB("%E9%83%BD%E5%B8%82%E6%83%85%E7%B7%A3 %E6%98%9F%E5%BA%A7")
fonction UTF2GB(UTFStr)
pour Dig=1 à len(UTFStr)
si mid(UTFStr,Dig,1)="%" alors
si len(UTFStr) >= Dig+8 alors
GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))
Creuser=Creuser+8
autre
GBStr=GBStr & mi(UTFStr,Dig,1)
finir si
autre
GBStr=GBStr & mi(UTFStr,Dig,1)
finir si
suivant
UTF2GB=GBStr
fonction de fin
fonction ConvChinese(x)
A=divisé(milieu(x,2),"%")
je = 0
j=0
pour i=0 vers ubound(A)
UNE(je)=c16à2(UNE(je))
suivant
pour i=0 jusqu'à ubound(A)-1
DigS=instr(A(i),"0")
Unicode=""
pour j=1 à DigS-1
si j=1 alors
A(i)=droite(A(i),len(A(i))-DigS)
Unicode=Unicode & A(i)
autre
je=je+1
A(i)=droite(A(i),len(A(i))-2)
Unicode=Unicode & A(i)
finir si
ensuite
si len(c2to16(Unicode))=4 alors
ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))
autre
ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))
finir si
suivant
fonction de fin
fonction c2to16(x)
je = 1
pour i=1 à len(x) étape 4
c2to16=c2to16 & hex(c2to10(mid(x,i,4)))
suivant
fonction de fin
fonction c2to10(x)
c2à10=0
si x="0" alors quittez la fonction
je = 0
pour i= 0 à len(x) -1
si mid(x,len(x)-i,1)="1" alors c2to10=c2to10+2^(i)
suivant
fonction de fin
fonction c16to2(x)
je = 0
pour i=1 à len(trim(x))
tempstr= c10to2(cint(int("&h" & mid(x,i,1))))
faire pendant len(tempstr)<4
tempstr="0" & tempstr
boucle
c16to2=c16to2 & tempstr
suivant
fonction de fin
fonction c10to2(x)
monsign=sgn(x)
x=abdos(x)
Fouilles=1
faire
si x<2^DigS alors
sortir faire
autre
Creuser=Creuser+1
finir si
boucle
tempnum=x
je=0
pour i=DigS à 1 étape-1
si tempnum>=2^(i-1) alors
tempnum=tempnum-2^(i-1)
c10to2=c10to2 & "1"
autre
c10to2=c10to2 & "0"
finir si
suivant
si monsign=-1 alors c10to2="-" & c10to2
fonction de fin
%>