ฉันพบปัญหาเมื่อฉันสร้างคุณสมบัติเล็ก ๆ ในวันนี้ เพื่อให้ได้มันอีกครั้ง แต่สิ่งนี้จะเพิ่มประสิทธิภาพการดำเนินการของรหัสอย่างไม่ต้องสงสัย
ตัวอย่างเช่น "อักขระจีน"
การเข้ารหัสภายใต้ UTF-8 คือ:%E6%B1%89%E5%AD%97
การเข้ารหัสภายใต้ GB2312 คือ:%ba%ba%d7%d6 d6
และหน้าเว็บของฉันถูกเข้ารหัสใน UTF-8 ในปัจจุบันดังนั้นจะแปลงสตริงการเข้ารหัสบริสุทธิ์เหล่านี้เป็นอักขระจีนได้อย่างไร?
ก่อนอื่นฟังก์ชันต่อไปนี้ควรรวมอยู่ในหน้าของฉัน:
function urldeCode (enstr)
dim dest, strspecial
สลัว c, i, v
ทำลาย =
strspecial =!#$%& '()*+,
สำหรับ i = 1 ถึง len (enstr)
c = mid (enstr, i, 1)
ถ้า c =% จากนั้น
v = eval
ถ้า instr (strspecial, chr (v))> 0 แล้ว
Destr = Destr & Chr (V)
i = i+2
อื่น
v = eval (& h+ mid (enstr, i+ 1,2)+ mid (estr, i+ 4,2)))
Destr = Destr & Chr (V)
i = i+5
สิ้นสุดถ้า
อื่น
ถ้า c =+ แล้ว
Destr = Destram &
อื่น
Dest = Dest & C
สิ้นสุดถ้า
สิ้นสุดถ้า
ต่อไป
urldeCode = dest
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นด้านบนเป็นฟังก์ชั่นการถอดรหัส URL
ฟังก์ชั่น UTF2GB (UTFSTR)
สำหรับ DIG = 1 ถึง LEN (UTFSTR)
'ถ้าข้อความการเข้ารหัส UTF8 เริ่มต้นด้วย%มันจะถูกแปลง
ถ้า mid (utfstr, dig, 1) =% แล้ว
'ข้อความการเข้ารหัส UTF8 มากกว่า 8 จากนั้นแปลงเป็นอักขระภาษาจีน
ถ้า 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
ฟังก์ชันสิ้นสุด
'ข้อความการเข้ารหัส UTF8 จะถูกแปลงเป็นอักขระภาษาจีน
ฟังก์ชั่น Convchinese (X)
A = แยก (กลาง (x, 2),%)
i = 0
J = 0
สำหรับ i = 0 ถึง Ubound (a)
a (i) = c16to2 (a (i))
ต่อไป
สำหรับ i = 0 ถึง ubound (a) -1
digs = instr (a (i), 0)
unicode =
สำหรับ J = 1 ถึง DIGS-1
ถ้า j = 1 แล้ว
a (i) = ขวา (a (i), len (a (i)) -igs)
unicode = Unicode & a (i)
อื่น
i = i+1
a (i) = ขวา (a (i), len (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)
i = 1
สำหรับ i = 1 ถึง len (x) ขั้นตอนที่ 4
C2TO16 = C2TO16 & Hex (C2TO10 (กลาง (x, i, 4))))
ต่อไป
ฟังก์ชันสิ้นสุด
'รหัสไบนารีแปลงเป็นรหัสทศนิยม
ฟังก์ชั่น c2to10 (x)
c2to10 = 0
ถ้า x = 0 จากนั้นออกจากฟังก์ชัน
i = 0
สำหรับ i = 0 ถึง len (x) -1
ถ้า mid (x, len (x) -i, 1) = 1 จากนั้น c2to10 = c2to10+2^(i)
ต่อไป
ฟังก์ชันสิ้นสุด
'รหัสพระคัมภีร์ถูกแปลงเป็นรหัสไบนารี
ฟังก์ชั่น C16to2 (x)
i = 0
สำหรับ i = 1 ถึง len (trim (x))
tempstr = c10to2 (cint (int (& h & mid (x, i, 1))))
ทำในขณะที่เลน (tempstr) <4
tempstr = 0 & tempstr
วง
c16to2 = c16to2 & tempstr
ต่อไป
ฟังก์ชันสิ้นสุด
'รหัสด้านบนแปลงเป็นรหัสไบนารี
ฟังก์ชั่น c10to2 (x)
mysign = sgn (x)
x = abs (x)
ขุด = 1
ทำ
ถ้า x <2^ขุดจากนั้น
ออก
อื่น
ขุด = ขุด+1
สิ้นสุดถ้า
วง
tempnum = x
i = 0
สำหรับ i = digs ถึง 1 step-1
ถ้า tempnum> = 2^(i-1) แล้ว
tempnum = tempnum-2^(i-1)
c10to2 = c10to2 & 1
อื่น
c10to2 = c10to2 & 0
สิ้นสุดถ้า
ต่อไป
ถ้า mysign = -1 แล้ว c10to2 = -& c10to2
ฟังก์ชันสิ้นสุด
ในหน้า UTF-8 ปกติเราสามารถใช้โดยตรง:
Response.Write UTF2GB (%E6%B1%89%E5%AD%97)
นั่นคือ: UTF2GB (%E6%B1%89%E5%AD%97) = อักขระจีน
แต่ถ้าหน้า UTF8 ปัจจุบันได้รับการเข้ารหัส GB (เช่น%BA%BA%D7%D6) เราจะแปลงเป็นอักขระจีนได้อย่างไร ในเวลานี้ฟังก์ชั่นการถอดรหัสของ UrldeCode (enstr) ด้านบนจะถูกนำมาใช้ด้านบน แต่ไม่สามารถใช้งานได้โดยตรง
-
Session.codePage = 936 'บังคับให้แปลงเป็นภายใต้ GB2312
Dim MyKey: myKey = urldeCode (%ba%ba%d7%d6) 'gb cod string
session.codePage = 65001 'กลับหน้ากลับไปที่การเข้ารหัส UTF-8 อีกครั้ง
Response.write (myKey)
-
ในเวลานี้ฉันมีตัวละครจีน ง่ายๆอย่าลืมติดตามไซต์นี้ในครั้งต่อไปในระยะทาง