ในโครงการของวันนี้ฉันพบสถานการณ์ที่ฉันต้องการเข้ารหัสอักขระจีนด้วย JavaScript แล้วถอดรหัสด้วย Unsescape เมื่อทดสอบเซ็กเมนต์รหัสฉันมีรหัสที่อ่านไม่ออก
สถานการณ์เฉพาะมีดังนี้:
ก่อนอื่นให้ใช้ EditPlus เพื่อเปิดหน้าทดสอบ test.html และแก้ไขรหัส HTML ต่อไปนี้:
<! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "content-ype" content = "text/html; charset = utf-8"/> <title> unescape testStr = Escape ("wulin.com"); document.write (teststr); </script> </body> </html>หน้าพิมพ์:
%ufffd%u0171%ufffd%u05ae%ufffd%ufffd%ufffd
ในเวลานี้เราจะเห็นว่าสถานการณ์ผิด มันผิดไปแล้วในแง่ของจำนวนอักขระที่สอดคล้องกับอักขระจีน!
จากนั้นใช้รหัสต่อไปนี้เพื่อทดสอบอักขระจีนที่ถอดรหัสโดย Unsescape:
var relstr = unescape ("%ufffd%u0171%ufffd%u05ae%ufffd%uffd"); document.write (relstr);รหัสขยะปรากฏขึ้น: ��֮���
สารละลาย:
ฉันเปิดไฟล์ test.html กับ Dreamweaver และพบปัญหา!
ส่วนเดิม
var teststr = Escape ("wulin.com");กลายเป็น
var teststr = escape ("ű֮");จะเห็นได้ว่ามันเกิดจากการเข้ารหัสครั้งแรกของตัวแก้ไข!
เปลี่ยนตัวละครจีนใน Dreamweaver, Rerun test.html และรับการเข้ารหัสที่สอดคล้องกัน:
%u811a%u672c%u4e4b%u5bb6
จากนั้นใช้ Unsescape เพื่อถอดรหัส:
var relstr = unescape ("%u811a%u672c%u4e4b%u5bb6"); document.write (relstr);จากนั้นฉันก็มีตัวละครจีนที่ถูกต้องดั้งเดิม: wulin.com!