ตามรูปแบบการเข้ารหัสเริ่มต้นของไฟล์หน้าเว็บที่สร้างโดย FSO และวิธีการแปลงเป็นการเข้ารหัส UTF-8 ออบเจ็กต์ Adodb.Stream จะใช้ในการเขียนฟังก์ชันและสร้างไฟล์หน้าเว็บ UTF-8 ได้สำเร็จ ฟังก์ชันต่อไปนี้ใช้วัตถุ FSO และตำแหน่งไฟล์คือ FSO.ASP มีเพียงสามแอตทริบิวต์การเข้ารหัสไฟล์ของวัตถุ FSO ค่าเริ่มต้นของระบบคือ Unicode, ASCII และเราต้องการไม่มี UTF-8 ดังนั้น โดยทั่วไปไฟล์ที่สร้างขึ้นโดยใช้วัตถุ FSO บนระบบภาษาจีนจะอยู่ในเว็บ gb2312 รูปแบบการเข้ารหัสหน้าและการเข้ารหัส UTF-8 ไม่สามารถสร้างได้ ดังนั้น ภาษาละติน เช่น อังกฤษ และจีน จึงสามารถแสดงได้ตามปกติ แต่ภาษาที่ไม่ใช่ภาษาละติน เช่น รัสเซีย จะทำให้หน้าอ่านไม่ออก
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น createfile (sfilename, scontent)
ตั้งค่า fso=server.CreateObject (scripting.filesystemobject)
'set f1=fso.opentextfile(sfilename,2,true,-1) 'ผนวก=8 เขียนเท่านั้น=2 การเข้ารหัส Unicode=-1
ตั้งค่า f1=fso.opentextfile(sfilename,2,true)
f1.write (ไม่พอใจ)
f1.ปิด
ตั้งค่า fso=nothing
ฟังก์ชั่นสิ้นสุด
เลือกใช้วัตถุ ADODB.STREAM เพื่อแทนที่วัตถุ FSO เนื่องจากคลาส STREAM มีเมธอด LOADFROMFILE และ SAVETOFILE และมีคุณลักษณะ CHARSET ที่สำคัญ ซึ่ง FSO ไม่มี ฟังก์ชันต่อไปนี้เขียนขึ้นใน Adodb.Stream และสร้างไฟล์หน้าเว็บ UTF-8 ได้สำเร็จ
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น createfile (sfilename, scontent)
ตั้งค่า objStream = Server.CreateObject(ADODB.Stream)
ด้วย objStream
.เปิด
.ชุดอักขระ = utf-8
.Position = objStream.Size
.WriteText=ไม่พอใจ
.SaveToFile ชื่อไฟล์2
.ปิด
จบด้วย
ตั้งค่า objStream = ไม่มีเลย
ฟังก์ชั่นสิ้นสุด
สำหรับโปรแกรมที่ใช้ FSO ตราบใดที่ฟังก์ชันได้รับการแก้ไขและชื่อฟังก์ชันไม่เปลี่ยนแปลง ก็สามารถทำงานได้ตามปกติ ซึ่งไร้ปัญหาและสะดวกยิ่งขึ้น
หากคุณใช้เทมเพลตเพื่อสร้างไฟล์ คุณจะต้องอ่านไฟล์เทมเพลตในการเข้ารหัส UTF-8 มิฉะนั้น การเข้ารหัสไฟล์ที่ถูกต้องจะถูกปล่อยออกมาในเบื้องหลัง แต่ไฟล์เทมเพลตจะถูกอ่านด้วยการเข้ารหัส GB2312 ของ FSO หน้าเทมเพลตเป็นภาษารัสเซียหรือภาษาอื่นๆ ที่ไม่ใช่ภาษาละติน โดยจะมีอักขระที่อ่านไม่ออกปรากฏขึ้น ฟังก์ชั่นได้รับการแก้ไขดังนี้:
ฟังก์ชัน READFILE ของ FSO ที่ใช้แต่แรก
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น readfile (sfilename)
ตั้งค่า fso=server.CreateObject(scripting.filesystemobject)
ตั้งค่า f = fso.OpenTextFile(sfilename, 1, true)
ถ้าไม่ใช่ f.AtEndOfStream ให้ readfile = f.readAll
ตั้งค่า f=ไม่มีอะไร
ตั้งค่า fso=nothing
ฟังก์ชั่นสิ้นสุด
แทนที่ฟังก์ชัน READFILE ของ ADODB.STREAM
โปรดทราบว่าตามความต้องการที่แท้จริง ให้ลบหรือคงชุดอักขระพารามิเตอร์ชุดอักขระ Readfile (sfilename, ชุดอักขระ) ไว้
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น readfile(sfilename)
ฉ
ตั้งค่า stm=server.CreateObject(adodb.stream)
stm.Type=2 'อ่านในโหมดนี้'
stm.mode=3
stm.charset=utf-8
stm.เปิด
stm.loadfromfile ชื่อไฟล์
f=stm.readtext
stm.ปิด
ตั้ง stm=ไม่มีอะไร
อ่านไฟล์=f
ฟังก์ชันสิ้นสุด
เกี่ยวกับการเข้ารหัสไฟล์และการเข้ารหัสหน้าเว็บ โปรดดูคำอธิบายโดยละเอียดเกี่ยวกับความแตกต่างระหว่างชุดอักขระ Charset และการเข้ารหัสไฟล์
ตัวอย่างโปรแกรมอื่นๆ
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'ชื่อฟังก์ชัน: ReadTextFile
'ฟังก์ชัน: ใช้ออบเจ็กต์ AdoDb.Stream เพื่ออ่านไฟล์ข้อความในรูปแบบ UTF-8
'------------------------------------------------ - --
ฟังก์ชั่น ReadFromTextFile (FileUrl, CharSet)
ถนนติ่มซำ
ตั้งค่า stm=server.CreateObject(adodb.stream)
stm.Type=2 'อ่านในโหมดนี้'
stm.mode=3
stm.charset=ชุดอักขระ
stm.เปิด
stm.loadfromfile เซิร์ฟเวอร์ MapPath (FileUrl)
str=stm.readtext
stm.ปิด
ตั้งค่า stm=nothing
ReadFromTextFile=str
ฟังก์ชันสิ้นสุด
-
'ชื่อฟังก์ชัน:WriteToTextFile
'ฟังก์ชัน: ใช้ออบเจ็กต์ AdoDb.Stream เพื่อเขียนไฟล์ข้อความในรูปแบบ UTF-8
'------------------------------------------------ - --
ย่อย WriteToTextFile (FileUrl, byval Str, CharSet)
ตั้งค่า stm=Server.CreateObject(adodb.stream)
stm.Type=2 'อ่านในโหมดนี้'
stm.mode=3
stm.charset=ชุดอักขระ
stm.เปิด
stm.WriteText STR
เซิร์ฟเวอร์ stm.SaveToFile.MapPath(FileUrl),2
stm.ฟลัช
stm.ปิด
ตั้ง stm=ไม่มีอะไร
จบหมวดย่อย
ในหมู่พวกเขาให้ความสนใจกับปัญหาเส้นทางในบรรทัดนี้ stm.SaveToFile server.MapPath(FileUrl),2