เมื่อเร็ว ๆ นี้ บริษัท มีโครงการญี่ปุ่น เนื่องจากมันใช้ในการใช้ CMS จีนที่พัฒนาขึ้นด้วยตัวเองและไม่ได้แยกแพ็คเกจภาษาจึงพบปัญหาที่เกิดจากอาการปวดหัวที่ไม่น่าเบื่อระหว่างการสร้างเว็บไซต์และกระบวนการดีบัก
เหตุผลสำหรับรหัสที่อ่านไม่ออก
เนื่องจากพื้นที่เก็บข้อมูลของการเข้ารหัสอักขระแต่ละตัวแตกต่างกันเมื่อมีการใช้อักขระที่แตกต่างกันในการอ่านข้อมูลเมื่อพื้นที่อักขระมีขนาดเล็กเกินไปจึงไม่สามารถแสดงได้ตามปกติ
ตัวอย่างเช่นชุดอักขระของอักขระจีนโดยทั่วไปคือ GB2312 หากคุณใช้ UTF-8 เพื่อบังคับให้อ่านและเปลี่ยนอักขระของ GB2312 อาจมีรหัสที่อ่านไม่ออก เนื่องจากพื้นที่เก็บข้อมูลของชุดอักขระของ UTF-8 นั้นมากกว่า GB2312 เมื่ออ่านโดยใช้ UTF-8 อักขระบางตัว GB2312 ไม่มีอยู่ในการเข้ารหัสและตัวละครที่ไม่มีอยู่จริง สำหรับไฟล์คงที่หากการเข้ารหัสที่เก็บข้อมูลของไฟล์ไม่สอดคล้องกับการตั้งค่าการเข้ารหัส (charset) ในหน้าเว็บรหัสที่อ่านไม่ออกจะเกิดขึ้นเนื่องจากเหตุผลข้างต้น
ข้างต้นเป็นการวิเคราะห์อย่างง่าย ๆ ของปัญหาที่อ่านไม่ออกซึ่งเกี่ยวข้องกับการสนับสนุนของ ASP สำหรับการทำให้เป็นสากลเมื่อแก้ปัญหาที่มีอยู่
สามฟังก์ชั่นที่เกี่ยวข้อง: @codepage, response.codepage, session.codepage
ด้านล่างเป็นข้อความจาก MSDN
sett@codepageExplentlyLaffectsliteralsTringsInasingLeresponse.response.codepageaffectsdynamicstringsinasingleresponse และเซสชั่น.
ฟังก์ชั่นทั้งสามสามารถตั้งค่าการเข้ารหัสของ ASP โดยที่ @CodePage เทียบเท่ากับส่วนหัวใน PHP และจะต้องออกที่จุดเริ่มต้นของเอกสาร
ใน IIS ของระบบปฏิบัติการจีนค่าเริ่มต้นคือ GB2312 ค่าพารามิเตอร์คือ: "936" และเอกสารญี่ปุ่นจำเป็นต้องระบุรหัส:
<%@codePage = 932%>
เราใช้ฟังก์ชั่นนี้เพื่อตั้งค่าการเข้ารหัสเอกสารสำหรับวิธีการใช้งานเฉพาะ: http://www.cloudward.net/techlife/article.asp?id=490
ตอนนี้ไม่ควรมีปัญหาใช่มั้ย ว้าวปัญหายังคงมีอยู่ พิจารณาว่าโปรแกรม ASP ของ บริษัท SEO ทั้งหมดจำเป็นต้องสร้างหน้าคงที่ หน้าสร้างเป็น ANSI เริ่มต้นทั้งหมดของ Windows และพวกเขายังคงมีรหัสที่อ่านไม่ออกที่มีอักขระญี่ปุ่น ด้วยวิธีนี้เราต้องการฟังก์ชั่น ASP เพื่อสร้าง UTF-8 หรือไฟล์ที่เข้ารหัสภาษาญี่ปุ่น เราใช้รหัสต่อไปนี้เพื่อกรอก:
setObjstream = server.createObject ("adodb.stream")
ไม่มี bjstream
.เปิด
.Charset = "UTF-8" // การเข้ารหัสที่นี่คุณสามารถเปลี่ยนเป็นการเข้ารหัสใด ๆ
.position = objstream.size
.writeText = Pencat // Pencat เป็นข้อมูลที่เป็นลายลักษณ์อักษร
.savetofilesserver.mappath ("patch/flilename.html"), 2 // สร้างเส้นทางไฟล์
.ปิด
จบลงด้วย
setObjstream = ไม่มีอะไร
ปัญหาของรหัสที่อ่านไม่ออกหลังจากการทดสอบได้รับการแก้ไข