วิธีที่ดีที่สุด:
ให้ฉันพูดถึงพื้นฐานก่อน:
<%@ codePage = 65001%> UTF-8
<%@ codePage = 936%> ภาษาจีนง่ายๆ
<%@ codePage = 950%> ภาษาจีนดั้งเดิม
< %@ codePage = 437 %> สหรัฐอเมริกา/canada English
< %@ codePage = 932 %> ญี่ปุ่น
< %@ codePage = 949 %> เกาหลี
< %@ codePage = 866 %> รัสเซีย
CodePage ระบุว่ารหัส IIS อ่านสตริงที่ผ่าน (การส่งแบบฟอร์มการส่งแถบที่อยู่ ฯลฯ )
เหตุผลของรหัสที่อ่านไม่ออกคือการเข้ารหัสโมดูลนั้นแตกต่างกันเมื่อเว็บไซต์จำเป็นต้องรวมเข้าด้วยกัน
เช่นเดียวกับบล็อกของฉันปัญหานี้จะเกิดขึ้นเมื่อรวมเข้าด้วยกันเนื่องจากบล็อกมาจาก UTF-8
เมื่อเร็ว ๆ นี้ชาวเน็ตจำนวนมากได้ให้คำปรึกษาเกี่ยวกับปัญหานี้และฉันได้ลองใช้วิธีการมากมาย
วิธีที่สะดวกที่สุดมีดังนี้:
อย่าแปลงหน้าเว็บโมดูลใด ๆ ที่เข้ารหัส UTF-8 หรือ UTF-8 และ GB22312 หรือ GB2312
ในเอกสารประกอบแพ็คเกจ UTF-8 โมดูล (เช่น conn.asp แต่โปรดทราบว่าต้องมีการเรียก conn.asp ในบรรทัดแรก) เพิ่มบรรทัดแรก
<%@language = "vbscript" codePage = "65001"%>
<%session.codePage = 65001%>
เพิ่มด้านหน้าของเอกสารแพ็คเกจของโมดูล GB2312
<%@language = "vbscript" codePage = "936"%>
<%session.codePage = 936%>
การเข้ารหัสอื่น ๆ และอื่น ๆ
การแปลงระหว่างอักขระจีนและ UTF-8 ใน ASP
'=================== แปลงอักขระภาษาจีนเป็น utf-8 =============================
ฟังก์ชั่น Chinese2Unicode (STR)
สำหรับ i = 1 ถึง len (str)
str_one = mid (str, i, 1)
str_unicode = str_unicode & ch (38)
str_unicode = str_unicode & ch (35)
str_unicode = str_unicode & ch (120)
str_unicode = str_unicode & hex (ascw (str_one))
str_unicode = str_unicode & ch (59)
ต่อไป
chinese2unicode = str_unicode
ฟังก์ชันสิ้นสุด
'=================== utf-8 แปลงเป็นอักขระจีน ============================
ฟังก์ชั่น 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)
A = แยก (กลาง (x, 2), "%")
i = 0
J = 0
สำหรับ i = 0 ถึง Ubund (a)
a (i) = c16to2 (a (i))
ต่อไป
สำหรับ i = 0 ถึง ubund (a) -1
digs = instr (a (i), "0")
unicode = ""
สำหรับ J = 1 ถึง DIGS-1
ถ้า j = 1 แล้ว
a (i) = ขวา (a (i), len (a (i))-digs)
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 (Mid (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 (int ("& h" & mid (x, i, 1)))))))