เอกสารอ้างอิง: http://www.linuxforum.net/books/utf-8-unicode.html
รหัสมีดังนี้:
การคัดลอกรหัสมีดังนี้:
<scriptLanguage = "vbscript">
'http://www.linuxforum.net/books/utf-8-unicode.html
PublicFunctionUTF8ENCODECHAR (Z)
dimc: c = ascw (z) 'รับการเข้ารหัส Unicode
ifc> 0andc <256then'asc การเข้ารหัสส่งคืนโดยตรง
UTF8ENCODECHAR = Z
exitfunction
endif
IFC <0THENC = C+& H10000 & 'VBScript's Integer Overflow, Plus
dimk: k = clng (c) 'สำรองรหัสและใช้หลังจากการตัดสิน
dimb ()
dimi: i = 0
ในขณะที่> & h0 & 'บันทึกการเข้ารหัสลงในกลุ่ม 6 บิตและบันทึกกลุ่มลงในอาร์เรย์ไบต์ B
redimpreserveB (i)
B (i) = CBYTE (Cand & H3F &)
C = C/& H40 &
i = i+1
ใช้
ifubound (b)> 0 แล้วถ้ามีกลุ่ม 6 บิตมากกว่าหนึ่งกลุ่มยกเว้นกลุ่มสูงสุดไบนารีทั้งหมด 10,000,000 จะถูกเพิ่มเข้ามา
fori = 0toubound (b) -1
b (i) = b (i)+& h80
ต่อไป
endif
i = ubound (b) 'คำนำหน้ากลุ่มสูงสุดตามช่วงการเข้ารหัส Unicode ของอักขระ
ifk <= clng (& h7f &) จากนั้น
b (i) = b (i) +0
elseifk <= clng (& h7ff &) แล้ว
b (i) = b (i)+& hc0
elseifk <= clng (& hffff &) แล้ว
b (i) = b (i)+& he0
elseifk <= clng (& h1fffff &) จากนั้น
b (i) = b (i)+& hf0
elseifk <= clng (& h3fffff &) จากนั้น
b (i) = b (i)+& hf8
อื่น
b (i) = b (i)+& hfc
endif
UTF8ENCODECHAR = ""
fori = ubound (b) to0step-1 'แปลงแพ็คเก็ตเป็น url encoding
UTF8ENCODECHAR = UTF8ENCODECHAR & "%" & Right ("00" & Hex (B (i)), 2)
ต่อไป
eraseb
endfunction
PublicFunctionUtF8Encodestring (s)
dimi, l, c: l = len (s)
fori = 1tol
UTF8ENCODESTRING = UTF8ENCODESTRING & UTF8ENCODECHAR (MID (S, I, 1))
ต่อไป
endfunction
msgboxutf8encodestring ("听听听听听听")
</script>
วิธีทดสอบ:
http://www.google.com/search?hl=zh-cn&newwindow=1&rls=gglg%2cgglg%3a2006-15%2Cgglg%3AZH-CN&Q=YOUR CODE
การคัดลอกรหัสมีดังนี้:
functionReverTutf8 (szinput)
-
VARX, WCH, WCH1, WCH2, UCH = "", SZRET = "";
สำหรับ (x = 0; x <szinput.length; x ++)
-
if (szinput.charat (x) == "%")
-
WCH = PARSEINT (szinput.charat (++ x)+szinput.charat (++ x), 16);
if (! wch) {break;}
ถ้า (! (WCH & 0x80))
-
WCH = WCH;
-
elseif (! (WCH & 0x20))
-
x ++;
wch1 = parseint (szinput.charat (++ x)+szinput.charat (++ x), 16);