Gemäß dem Standardcodierungsformat der vom FSO generierten Webseitendatei und der Konvertierungsmethode in UTF-8-Codierung wird das Adodb.Stream-Objekt zum Schreiben der Funktion verwendet und die UTF-8-Webseitendatei erfolgreich generiert. Die folgenden Funktionen verwenden FSO-Objekte und der Speicherort der Datei ist FSO.ASP. Es gibt nur drei Dateikodierungsattribute des FSO-Objekts. Der Systemstandard ist Unicode, ASCII, und wir möchten kein UTF-8. Daher befinden sich die durch die Verwendung des FSO-Objekts auf dem chinesischen System generierten Dateien im Allgemeinen im gb2312-Web Das Seitenkodierungsformat und die UTF-8-Kodierung können nicht generiert werden. Daher können lateinische Sprachen wie Englisch und Chinesisch normal angezeigt werden, nicht-lateinische Sprachen wie Russisch führen jedoch zu verstümmelten Seiten.
Kopieren Sie den Codecode wie folgt:
Funktion createfile(sfilename,scontent)
set fso=server.CreateObject(scripting.filesystemobject)
'set f1=fso.opentextfile(sfilename,2,true,-1) 'append=8 nur write=2 Unicode-Kodierung=-1
set f1=fso.opentextfile(sfilename,2,true)
f1.write(scontent)
f1.schließen
setze fso=nichts
Endfunktion
Wählen Sie die Verwendung des ADODB.STREAM-Objekts als Ersatz für das FSO-Objekt, da die STREAM-Klasse über die Methoden LOADFROMFILE und SAVETOFILE verfügt und über ein entscheidendes Attribut CHARSET verfügt, das FSO nicht hat. Die folgende Funktion ist in Adodb.Stream geschrieben und generiert erfolgreich UTF-8-Webseitendateien.
Kopieren Sie den Codecode wie folgt:
Funktion createfile(sfilename,scontent)
Setze objStream = Server.CreateObject(ADODB.Stream)
Mit objStream
.Offen
.Charset = utf-8
.Position = objStream.Size
.WriteText=scontent
.SaveToFile sDateiname,2
.Schließen
Ende mit
Setze objStream = Nothing
Endfunktion
Bei Programmen, die FSO verwenden, kann die Funktion normal ausgeführt werden, solange sie geändert wird und der Funktionsname unverändert bleibt, was problemloser und bequemer ist.
Wenn Sie eine Vorlage zum Generieren von Dateien verwenden, müssen Sie die Vorlagendatei auch in der UTF-8-Kodierung lesen. Andernfalls wird die korrekte Dateikodierung im Hintergrund freigegeben, die Vorlagendatei wird jedoch mit der GB2312-Kodierung des FSO eingelesen Wenn die Vorlagenseite auf Russisch oder einer anderen nicht-lateinischen Sprache verfasst ist, werden verstümmelte Zeichen angezeigt. Die Funktion wird wie folgt geändert:
Die ursprünglich verwendete READFILE-Funktion von FSO
Kopieren Sie den Codecode wie folgt:
Funktion readfile(sfilename)
Setze fso=server.CreateObject(scripting.filesystemobject)
Setze f = fso.OpenTextFile(sfilename, 1, true)
Wenn nicht f.AtEndOfStream, dann readfile = f.readAll
Setze f=nichts
Setze fso=nichts
Endfunktion
Ersetzen Sie die READFILE-Funktion von ADODB.STREAM
Beachten Sie, dass je nach tatsächlichem Bedarf der Parameter charset der Funktion readfile (sfilename, charset) entfernt oder beibehalten werden muss.
Kopieren Sie den Codecode wie folgt:
Funktion readfile(sfilename)
F
Setze stm=server.CreateObject(adodb.stream)
stm.Type=2 'In diesem Modus lesen
stm.mode=3
stm.charset=utf-8
stm.open
stm.loadfromfile sDateiname
f=stm.readtext
stm.Schließen
Setze stm=Nichts
readfile=f
Funktion beenden
Informationen zur Dateikodierung und Webseitenkodierung finden Sie in der ausführlichen Erläuterung des Unterschieds zwischen Zeichensatz, Zeichensatz und Dateikodierung.
Weitere Beispielprogramme
Kopieren Sie den Codecode wie folgt:
'------------------------------------------------
'Funktionsname: ReadTextFile
'Funktion: Verwenden Sie das AdoDb.Stream-Objekt, um Textdateien im UTF-8-Format zu lesen
'------------------------------------------------ - --
Funktion ReadFromTextFile (FileUrl,CharSet)
Dim str
Setze stm=server.CreateObject(adodb.stream)
stm.Type=2 'In diesem Modus lesen
stm.mode=3
stm.charset=CharSet
stm.open
stm.loadfromfile server.MapPath(FileUrl)
str=stm.readtext
stm.Schließen
Setze stm=nichts
ReadFromTextFile=str
Funktion beenden
'------------------------------------------------
'Funktionsname:WriteToTextFile
'Funktion: Verwenden Sie das AdoDb.Stream-Objekt, um Textdateien im UTF-8-Format zu schreiben
'------------------------------------------------ - --
Sub WriteToTextFile (FileUrl, byval Str, CharSet)
Setze stm=Server.CreateObject(adodb.stream)
stm.Type=2 'In diesem Modus lesen
stm.mode=3
stm.charset=CharSet
stm.open
stm.WriteText str
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Schließen
Setze stm=Nichts
Sub beenden
Achten Sie unter anderem auf das Pfadproblem in dieser Zeile: stm.SaveToFile server.MapPath(FileUrl),2