<%
'الغرض: تحويل الأحرف الصينية المشفرة 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 & ConvChinese(mid(UTFStr,Dig,9))
حفر=حفر+8
آخر
GBStr=GBStr & mid(UTFStr,Dig,1)
نهاية إذا
آخر
GBStr=GBStr & mid(UTFStr,Dig,1)
نهاية إذا
التالي
UTF2GB=GBStr
النهاية
ConvChinese(x)
أ = انقسام (منتصف (س، 2)، "٪")
أنا = 0
j=0
لـ i=0 إلى ubound(A)
ا(ط)=c16to2(أ(ط))
التالي
لـ i=0 إلى ubound(A)-1
DigS=instr(A(i),"0")
يونيكود = ""
لـ j=1 إلى DigS-1
إذا ي = 1 ثم
A(i)=يمين(A(i),len(A(i))-DigS)
Unicode=Unicode & A(i)
آخر
ط=ط+1
ا(i)=يمين(A(i),لين(A(i))-2)
Unicode=Unicode & A(i)
نهاية إذا
التالي
إذا len(c2to16(Unicode))=4 إذن
ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode)))
آخر
ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode)))
نهاية إذا
التالي
النهاية
c2to16(x)
أنا = 1
من أجل i=1 إلى len(x) الخطوة 4
c2to16=c2to16 & سداسي عشري(c2to10(منتصف(x,i,4)))
التالي
النهاية
c2to10(x)
c2to10=0
إذا كان x = "0" ثم اخرج من الوظيفة
أنا = 0
لأني= 0 إلى لين(x) -1
إذا كان mid(x,len(x)-i,1)="1" ثم c2to10=c2to10+2^(i)
التالي
النهاية
c16to2(x)
أنا = 0
لأني = 1 إلى لين (تقليم (س))
tempstr= c10to2(cint(int("&h" & mid(x,i,1))))
افعل ذلك أثناء len(tempstr)<4
tempstr = "0" & tempstr
حلقة
c16to2=c16to2 & tempstr
التالي
النهاية
c10to2(x)
ماي سيجن=sgn(x)
س = القيمة المطلقة (س)
الحفريات = 1
يفعل
إذا كان x<2^DigS إذن
الخروج القيام به
آخر
ديجس=ديجس+1
نهاية إذا
حلقة
درجة الحرارة = س
ط = 0
لـ i=DigS إلى الخطوة 1
إذا tempnum>=2^(i-1) إذن
درجة الحرارة = درجة الحرارة -2 ^ (ط -1)
c10to2=c10to2 & "1"
آخر
c10to2=c10to2 & "0"
نهاية إذا
التالي
إذا كان mysign=-1 ثم c10to2="-" & c10to2
وظيفة النهاية
%>