Selon le format de codage par défaut du fichier de page Web généré par FSO et la méthode de conversion en codage UTF-8, l'objet Adodb.Stream est utilisé pour écrire la fonction et le fichier de page Web UTF-8 est généré avec succès. Les fonctions suivantes utilisent des objets FSO et l'emplacement du fichier est FSO.ASP. Il n'y a que trois attributs de codage de fichier de l'objet FSO. La valeur par défaut du système est Unicode, ASCII, et nous ne voulons pas d'UTF-8. Par conséquent, les fichiers générés en utilisant l'objet FSO sur le système chinois se trouvent généralement dans le Web gb2312. Le format d'encodage de page et l'encodage UTF-8 ne peuvent pas être générés, par conséquent, les langues latines telles que l'anglais et le chinois peuvent être affichées normalement, mais les langues non latines telles que le russe entraîneront des pages tronquées.
Copiez le code comme suit :
fonction createfile (sfilename,scontent)
set fso=server.CreateObject(scripting.filesystemobject)
'set f1=fso.opentextfile(sfilename,2,true,-1) 'append=8 only write=2 Encodage Unicode=-1
set f1=fso.opentextfile(sfilename,2,true)
f1.write(scontent)
f1.fermer
définir fso = rien
fonction de fin
Choisissez d'utiliser l'objet ADODB.STREAM pour remplacer l'objet FSO, car la classe STREAM possède les méthodes LOADFROMFILE et SAVETOFILE et possède un attribut crucial CHARSET, que FSO n'a pas. La fonction suivante est écrite dans Adodb.Stream et génère avec succès des fichiers de page Web UTF-8.
Copiez le code comme suit :
fonction createfile (sfilename,scontent)
Définir objStream = Server.CreateObject (ADODB.Stream)
Avec objStream
.Ouvrir
.Charset = utf-8
.Position = objStream.Taille
.WriteText=scontent
.SaveToFile nom de fichier,2
.Fermer
Terminer par
Définir objStream = Rien
fonction de fin
Pour les programmes utilisant FSO, tant que la fonction est modifiée et que le nom de la fonction reste inchangé, elle peut fonctionner normalement, ce qui est plus simple et plus pratique.
Si vous utilisez un modèle pour générer des fichiers, vous devez également lire le fichier modèle en codage UTF-8. Sinon, le codage de fichier correct sera publié en arrière-plan, mais le fichier modèle est lu avec le codage GB2312 de FSO. Si la page du modèle est en russe ou dans d'autres langues non latines, des caractères tronqués apparaîtront. La fonction est modifiée comme suit :
La fonction READFILE de FSO utilisée à l'origine
Copiez le code comme suit :
fonction readfile(sfilename)
Définir fso=server.CreateObject(scripting.filesystemobject)
Définir f = fso.OpenTextFile(sfilename, 1, true)
sinon f.AtEndOfStream alors readfile = f.readAll
Définir f = rien
Définir fso = rien
fonction de fin
Remplacer la fonction READFILE de ADODB.STREAM
Notez qu'en fonction des besoins réels, supprimez ou conservez le paramètre charset de la fonction readfile (sfilename, charset).
Copiez le code comme suit :
Fonction readfile(sfilename)
f
Définir stm=server.CreateObject(adodb.stream)
stm.Type=2 'Lire dans ce mode
stm.mode=3
stm.charset=utf-8
stm.ouvert
stm.loadfromfile nom de fichier
f=stm.readtext
stm.Fermer
Définir stm=Rien
fichier lu=f
Fonction de fin
Concernant l'encodage de fichiers et l'encodage de pages Web, veuillez vous référer à l'explication détaillée de la différence entre le jeu de caractères Charset et l'encodage de fichiers Encoding.
Autres exemples de programmes
Copiez le code comme suit :
'------------------------------------------------
'Nom de la fonction : ReadTextFile
'Fonction : Utiliser l'objet AdoDb.Stream pour lire des fichiers texte au format UTF-8
'------------------------------------------------ - --
Fonction ReadFromTextFile (FileUrl, CharSet)
Dim str
Définir stm=server.CreateObject(adodb.stream)
stm.Type=2 'Lire dans ce mode
stm.mode=3
stm.charset=CharSet
stm.ouvert
stm.loadfromfile server.MapPath (FileUrl)
str=stm.readtext
stm.Fermer
Définir stm = rien
ReadFromTextFile=str
Fonction de fin
'------------------------------------------------
'Nom de la fonction : WriteToTextFile
'Fonction : Utiliser l'objet AdoDb.Stream pour écrire des fichiers texte au format UTF-8
'------------------------------------------------ - --
Sub WriteToTextFile (FileUrl, byval Str, CharSet)
Définir stm=Server.CreateObject(adodb.stream)
stm.Type=2 'Lire dans ce mode
stm.mode=3
stm.charset=CharSet
stm.ouvert
stm.WriteText chaîne
stm.SaveToFile serveur.MapPath(FileUrl),2
stm.flush
stm.Fermer
Définir stm=Rien
Fin du sous-marin
Parmi eux, faites attention au problème de chemin dans cette ligne, stm.SaveToFile server.MapPath(FileUrl),2