Es gibt einen Kunden, der eine russische Version seiner Website erstellen möchte. Ich verwende die UTF-8-Kodierung für das Front-End und die Backends, aber die durch die Datenbank generierten statischen russischen Informationen sind verstümmelt. Bei der Anzeige mit GB2312 werden die über die Datenbank generierten statischen russischen Informationen korrekt angezeigt, der russische Text in der Vorlagendatei ist jedoch verstümmelt.
Die spezifischen Merkmale sind wie folgt:
1. Verwirklichen Sie die normale russische Sprache mithilfe von Vorlagen.
2. Die über die Backend-Datenbank generierten statischen russischen Informationen werden im Backend normal angezeigt, im Frontend jedoch verstümmelt.
3. Englisch ist normal.
Ähnliche oder unterschiedliche Ausdrücke zum Thema
FSO schreibt UTF-8-codierte Dateien
Wie kann das FSO UTF-8-codierte Dateien generieren?
Was ist das Standardkodierungsformat der von FSO generierten Dateien?
So konvertieren Sie in die UTF-8-Kodierung
Problem mit dem FSO beim Generieren statischer Webseiten
Der Code für die Verwendung von FSO zum Generieren von Dateien in ASP lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
Funktion createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
set f1=fso.opentextfile(sfilename,2,true,-1)
f1.write(scontent)
f1.schließen
setze fso=nichts
Endfunktion
fso.opentextfile(sfilename,2,true,-1) Der letzte Parameter -1 gibt das Kodierungsformat als Unicode an. Wenn das Kodierungsformat Unicode ist, zeigt die Webseite UTF-16 Little-Endian an.
OpenTextFile-Methode
Erstellt die angegebene Datei und gibt ein TextStream-Objekt zurück, das zum Lesen oder Schreiben der erstellten Datei verwendet werden kann.
object.OpenTextFile(filename[, iomode[, create[, format]]])
Parameterobjekt, erforderlich. Sollte der Name eines FileSystemObjec- oder Folder-Objekts sein. Das ist fso.
Dateiname, erforderlich. Ein Zeichenfolgenausdruck, der die zu erstellende Datei angibt. Hier ist der Dateiname.
iomode, optionaler Parameter, gibt an, ob die Datei zum Lesen, Schreiben oder Anhängen verwendet wird. Der Standardwert ist 1 zum Lesen, 2 zum Schreiben und 8 zum Anhängen.
create, optionaler Parameter, ob die Datei erstellt werden soll, wenn sie nicht vorhanden ist, der Standardwert ist false, wenn Sie sie erstellen möchten, setzen Sie sie auf true.
Format, der Parameter kann eine der folgenden Einstellungen sein, die Standardeinstellung ist das ASCII-Format, und es gibt kein utf-8, das wir wollen:
TristateUseDefault -2 öffnet die Datei im Systemstandardformat.
TristateTrue -1 öffnet die Datei im Unicode-Format.
TristateFalse 0 Öffnen Sie die Datei im ASCII-Format.
Es gibt nur drei Codierungsattribute von FSO. Der Systemstandard ist Unicode, ASCII, und es gibt kein utf-8, das wir benötigen. Daher liegen die durch die Verwendung von FSO-Komponenten auf chinesischen Systemen generierten Dateien im Allgemeinen im gb2312-Codierungsformat vor.
Lösung eins
Die GB2312-Kodierung enthält russische Buchstaben. Wenn die Seite auf vereinfachtes Chinesisch GB2312 eingestellt ist, kann Russisch normal angezeigt werden. Da Chinesisch jedoch standardmäßig auf „Song Ti“ eingestellt ist, wird Russisch in voller Breite angezeigt. was hässlich ist, daher müssen fremde Schriftarten verwendet werden, wie zum Beispiel „New Rome“ oder „Arial“ usw. Chinesische Kunden können dort kommunizieren, aber wenn echte Russen im Internet surfen, müssen sie Chinesisch herunterladen und installieren, was nicht ideal ist und dazu führen kann, dass sie das Surfen im Internet aufgeben.
Lösung 2
Da ASP eine alte Sprache ist, unterstützen einige seiner Funktionen UTF-8 nur sehr schlecht. FSO unterstützt das direkte Generieren von Dateien im UTF-8-Format nicht, da es das erforderliche Dateiformat nicht angeben kann. Wenn Sie beispielsweise eine Datei im UTF-8-Format generieren möchten, können Sie das häufig verwendete Scripting.FileSystemObject-Objekt nicht verwenden. Wir müssen unser Denken ändern und Adodb.Stream verwenden. So werden einige aktuelle Blog-Programme implementiert, beispielsweise zblog.
Die Funktion des Scripting.FileSystemObject-Objekts zum Erstellen einer Datei ist wie folgt:
FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])
Das Unicode-Attribut wird wie folgt beschrieben:
Optional. Boolescher Wert, der angibt, ob die Datei im Unicode- oder ASCII-Dateiformat erstellt werden soll. Dieser Wert ist True, wenn die Datei im Unicode-Dateiformat erstellt wurde; False, wenn die Datei im ASCII-Dateiformat erstellt wurde. Wenn dieser Abschnitt weggelassen wird, wird davon ausgegangen, dass eine ASCII-Datei erstellt wird.
Leider können Sie mit dieser Funktion keine Dateien im UTF-8-Format erstellen.
Verwenden Sie das ADODB.Stream-Objekt, siehe unten zur Verwendung:
Kopieren Sie den Codecode wie folgt:
Setze objStream = Server.CreateObject("ADODB.Stream")
Mit objStream
.Offen
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath("/sitemap.xml"),2
.Schließen
Ende mit
Setze objStream = Nothing
Anhang: Einführung in ASCII, Unicode und UTF-8
ASCII ist ein Zeichensatz, der englische Groß- und Kleinbuchstaben, Zahlen, Steuerzeichen usw. umfasst. Er wird durch ein Byte dargestellt und reicht von 0 bis 127.
Da die durch ASCII dargestellten Zeichen sehr begrenzt sind, hat jedes Land oder jede Region auf dieser Grundlage einen eigenen Zeichensatz vorgeschlagen. Beispielsweise bietet GB2312, das in China weit verbreitet ist, eine Kodierung für chinesische Zeichen und wird durch zwei Bytes dargestellt.
Diese Zeichensätze sind untereinander nicht kompatibel und dieselben Zahlen können unterschiedliche Zeichen darstellen, was zu Problemen beim Informationsaustausch führt.
Unicode ist ein Zeichensatz, der alle Zeichen der Welt einer eindeutigen Zahl (Codepunkt) zuordnet, beispielsweise der Zahl 0x0041, die dem Buchstaben a entspricht. Unicode befindet sich noch in der Entwicklung und enthält immer mehr Zeichen.
Beim Speichern von durch Unicode dargestellten Zeichen ist eine bestimmte Codierungsmethode erforderlich, z. B. UCS-2, die zwei Bytes zur Darstellung von Unicode-codierten Zeichen verwendet. UTF-8 ist eine weitere Kodierungsmethode des Unicode-Zeichensatzes. Es hat eine variable Länge, bis zu 6 Bytes, und Zeichen mit weniger als 127 werden durch ein Byte dargestellt. Es hat das gleiche Ergebnis wie der ASCII-Zeichensatz, also sehr Gute Kompatibilität, englischer Text in ASCII-Kodierung kann ohne Änderung als UTF-8-Kodierung verarbeitet werden und ist weit verbreitet.