De acordo com o formato de codificação padrão do arquivo de página da web gerado pelo FSO e o método de conversão para codificação UTF-8, o objeto Adodb.Stream é usado para escrever a função e o arquivo de página da web UTF-8 é gerado com sucesso. As funções a seguir usam objetos FSO e o local do arquivo é FSO.ASP. Existem apenas três atributos de codificação de arquivo do objeto FSO. O padrão do sistema é Unicode, ASCII e não há nenhum UTF-8 que desejamos. Portanto, geralmente os arquivos gerados usando o objeto FSO no sistema chinês estão na web gb2312. formato de codificação de página e codificação UTF-8 não podem ser gerados, portanto, idiomas latinos, como inglês e chinês, podem ser exibidos normalmente, mas idiomas não latinos, como russo, causarão páginas ilegíveis.
Copie o código do código da seguinte forma:
função criararquivo(snomedoarquivo,scontent)
definir fso=server.CreateObject(scripting.filesystemobject)
'set f1=fso.opentextfile(sfilename,2,true,-1) 'append=8 somente write=2 Codificação Unicode=-1
definir f1=fso.opentextfile(sfilename,2,true)
f1.write(sconteúdo)
f1.fechar
definir fso = nada
função final
Opte por utilizar o objeto ADODB.STREAM para substituir o objeto FSO, pois a classe STREAM possui os métodos LOADFROMFILE e SAVETOFILE, e possui um atributo crucial CHARSET, que o FSO não possui. A função a seguir foi escrita em Adodb.Stream e gera arquivos de páginas da web UTF-8 com êxito.
Copie o código do código da seguinte forma:
função criararquivo(snomedoarquivo,scontent)
Definir objStream = Server.CreateObject(ADODB.Stream)
Com objStream
.Abrir
.Conjunto de caracteres = utf-8
.Posição = objStream.Size
.WriteText=scontent
.SaveToFile nome do arquivo,2
.Fechar
Terminar com
Definir objStream = Nada
função final
Para programas que usam FSO, desde que a função seja modificada e o nome da função permaneça inalterado, ela poderá ser executada normalmente, o que é mais fácil e conveniente.
Se você usar um modelo para gerar arquivos, também precisará ler o arquivo de modelo na codificação UTF-8. Caso contrário, a codificação correta do arquivo será liberada em segundo plano, mas o arquivo de modelo será lido com a codificação GB2312 do FSO. página do modelo estiver em russo ou em outros idiomas não latinos, caracteres ilegíveis aparecerão. A função é modificada da seguinte forma:
A função READFILE do FSO usada originalmente
Copie o código do código da seguinte forma:
função readfile(sfilename)
Definir fso=server.CreateObject(scripting.filesystemobject)
Definir f = fso.OpenTextFile(sfilename, 1, true)
se não f.AtEndOfStream então readfile = f.readAll
Definir f = nada
Defina fso = nada
função final
Substitua a função READFILE de ADODB.STREAM
Observe que, de acordo com as necessidades reais, remova ou retenha o parâmetro charset do arquivo de leitura da função (sfilename, charset).
Copie o código do código da seguinte forma:
Função readfile(sfilename)
f
Definir stm=server.CreateObject(adodb.stream)
stm.Type=2 'Ler neste modo
stm.mode=3
stm.charset=utf-8
stm.open
stm.loadfromfile nome do arquivo
f=stm.readtext
stm.Fechar
Definir stm=Nada
arquivo lido=f
Função final
Em relação à codificação de arquivos e codificação de páginas da web, consulte a explicação detalhada da diferença entre o conjunto de caracteres Charset e a codificação de arquivos.
Outros programas de exemplo
Copie o código do código da seguinte forma:
'------------------------------------------------
'Nome da função: ReadTextFile
'Função: Utilize o objeto AdoDb.Stream para ler arquivos de texto no formato UTF-8
'------------------------------------------------ - --
Função ReadFromTextFile (FileUrl,CharSet)
Rua escura
Definir stm=server.CreateObject(adodb.stream)
stm.Type=2 'Ler neste modo
stm.mode=3
stm.charset=Conjunto de caracteres
stm.open
stm.loadfromfile server.MapPath(FileUrl)
str=stm.readtext
stm.Fechar
Definir stm = nada
ReadFromTextFile=str
Função final
'------------------------------------------------
'Nome da função: WriteToTextFile
'Função: Use o objeto AdoDb.Stream para escrever arquivos de texto no formato UTF-8
'------------------------------------------------ - --
Sub WriteToTextFile (FileUrl, byval Str, CharSet)
Definir stm=Server.CreateObject(adodb.stream)
stm.Type=2 'Ler neste modo
stm.mode=3
stm.charset=Conjunto de caracteres
stm.open
stm.WriteText str
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Fechar
Definir stm=Nada
Finalizar sub
Entre eles, preste atenção ao problema do caminho nesta linha, stm.SaveToFile server.MapPath(FileUrl),2