-
'วัตถุประสงค์: แปลงอักขระจีนที่เข้ารหัส 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(กลาง(UTFStr,ขุด,9))
ขุด=ขุด+8
อื่น
GBStr=GBStr & กลาง(UTFStr,ขุด,1)
สิ้นสุดถ้า
อื่น
GBStr=GBStr & กลาง(UTFStr,ขุด,1)
สิ้นสุดถ้า
ต่อไป
UTF2GB=GBStr
ฟังก์ชันสิ้นสุด
ฟังก์ชัน ConvChinese(x)
A=แยก(กลาง(x,2),"%")
ผม=0
j=0
สำหรับ i=0 ถึง ubound(A)
ก(i)=c16to2(ก(i))
ถัดไป
สำหรับ i=0 ถึง ubound(A)-1
DigS=instr(A(i),"0")
ยูนิโค้ด = ""
สำหรับ j=1 ถึง DigS-1
ถ้า j=1 แล้ว
A(i)=ขวา(A(i),เลน(A(i))-DigS)
Unicode=ยูนิโค้ด & A(i)
อื่น
ฉัน=ฉัน+1
A(i)=ขวา(A(i),เลน(A(i))-2)
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
สำหรับ 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" & กลาง(x,i,1))))
ทำในขณะที่ len(tempstr)<4
tempstr="0" & tempstr
วนซ้ำ
c16to2=c16to2 & tempstr
ต่อไป
ฟังก์ชันสิ้นสุด
ฟังก์ชัน c10to2(x)
mysign=sgn(x)
x=หน้าท้อง(x)
หลัก=1
ทำ
ถ้า x<2^DigS แล้ว
ออกทำ
อื่น
DigS=DigS+1
สิ้นสุดถ้า
วนซ้ำ
อุณหภูมิ=x
i=0
สำหรับ i=DigS ถึง 1 ขั้นตอน-1
ถ้า tempnum>=2^(i-1) แล้ว
tempnum=tempnum-2^(i-1)
c10to2=c10to2 & "1"
อื่น
c10to2=c10to2 & "0"
สิ้นสุดถ้า
ต่อไป
ถ้า mysign=-1 แล้ว c10to2="-" & c10to2
ฟังก์ชั่นสิ้นสุด
-