De acuerdo con el formato de codificación predeterminado del archivo de página web generado por FSO y el método de conversión a codificación UTF-8, se utiliza el objeto Adodb.Stream para escribir la función y el archivo de página web UTF-8 se genera con éxito. Las siguientes funciones utilizan objetos FSO y la ubicación del archivo es FSO.ASP. Solo hay tres atributos de codificación de archivos del objeto FSO. El valor predeterminado del sistema es Unicode, ASCII y no queremos el UTF-8. Por lo tanto, generalmente los archivos generados mediante el uso del objeto FSO en el sistema chino están en la web gb2312. El formato de codificación de página y la codificación UTF-8 no se pueden generar. Por lo tanto, los idiomas latinos como el inglés y el chino se pueden mostrar normalmente, pero los idiomas no latinos como el ruso provocarán páginas confusas.
Copie el código de código de la siguiente manera:
función crear archivo (snombre de archivo, scontent)
establecer fso=servidor.CreateObject(scripting.filesystemobject)
'set f1=fso.opentextfile(sfilename,2,true,-1) 'append=8 solo escritura=2 codificación Unicode=-1
establecer f1=fso.opentextfile(snombredearchivo,2,verdadero)
f1.write(contento)
f1.cerrar
establecer fso = nada
función final
Elija utilizar el objeto ADODB.STREAM para reemplazar el objeto FSO, porque la clase STREAM tiene métodos LOADFROMFILE y SAVETOFILE, y tiene un atributo crucial CHARSET, que FSO no tiene. La siguiente función está escrita en Adodb.Stream y genera con éxito archivos de páginas web UTF-8.
Copie el código de código de la siguiente manera:
función crear archivo (snombre de archivo, scontent)
Establecer objStream = Server.CreateObject(ADODB.Stream)
Con objStream
.Abierto
.Juego de caracteres = utf-8
.Posición = objStream.Tamaño
.WriteText=scontento
.SaveToFile nombre de archivo,2
.Cerca
Terminar con
Establecer objStream = Nada
función final
Para los programas que usan FSO, siempre que se modifique la función y el nombre de la función permanezca sin cambios, se puede ejecutar normalmente, lo cual es más conveniente y sin problemas.
Si utiliza una plantilla para generar archivos, también debe leer el archivo de plantilla en codificación UTF-8. De lo contrario, la codificación de archivo correcta se publicará en segundo plano, pero el archivo de plantilla se leerá con la codificación GB2312 de FSO. La página de la plantilla está en ruso u otros idiomas no latinos, aparecerán caracteres confusos. La función se modifica de la siguiente manera:
La función READFILE de FSO utilizada originalmente
Copie el código de código de la siguiente manera:
función leer archivo (snombre de archivo)
Establecer fso=servidor.CreateObject(scripting.filesystemobject)
Establecer f = fso.OpenTextFile(sfilename, 1, verdadero)
si no es f.AtEndOfStream entonces readfile = f.readAll
Establecer f=nada
Establecer fso = nada
función final
Reemplace la función READFILE de ADODB.STREAM
Tenga en cuenta que, según las necesidades reales, elimine o conserve el conjunto de caracteres del parámetro charset de la función readfile (sfilename, charset).
Copie el código de código de la siguiente manera:
Función readfile(sfilename)
F
Establecer stm=servidor.CreateObject(adodb.stream)
stm.Type=2 'Leer en este modo
stm.modo=3
stm.charset=utf-8
stm.abierto
stm.loadfromfile nombre de archivo
f=stm.leer texto
stm.Cerrar
Establecer stm=Nada
leerarchivo=f
Función final
Con respecto a la codificación de archivos y la codificación de páginas web, consulte la explicación detallada de la diferencia entre el juego de caracteres Charset y la codificación de archivos.
Otros programas de muestra
Copie el código de código de la siguiente manera:
'------------------------------------------------
'Nombre de la función: ReadTextFile
'Función: Utilice el objeto AdoDb.Stream para leer archivos de texto en formato UTF-8
'------------------------------------------------ - --
Función ReadFromTextFile (FileUrl,CharSet)
Calle tenue
Establecer stm=servidor.CreateObject(adodb.stream)
stm.Type=2 'Leer en este modo
stm.modo=3
stm.charset=Juego de caracteres
stm.abierto
stm.loadfromfile server.MapPath(FileUrl)
str=stm.readtexto
stm.Cerrar
Establecer stm=nada
ReadFromTextFile=cadena
Función final
'------------------------------------------------
'Nombre de la función: WriteToTextFile
'Función: Utilice el objeto AdoDb.Stream para escribir archivos de texto en formato UTF-8
'------------------------------------------------ - --
Sub WriteToTextFile (FileUrl, byval Str, CharSet)
Establecer stm=Server.CreateObject(adodb.stream)
stm.Type=2 'Leer en este modo
stm.modo=3
stm.charset=Juego de caracteres
stm.abierto
stm.WriteText cadena
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Cerrar
Establecer stm=Nada
Subtítulo final
Entre ellos, preste atención al problema de ruta en esta línea, stm.SaveToFile server.MapPath(FileUrl),2