ASP UTF-8 인 코딩 정적 웹 페이지 생 성 함수

아래 함 수 는 FSO 대상 을 사용 하고 파일 위 치 는 FSO.ASP 입 니 다.FSO 대상 의 파일 인 코딩 속성 은 세 가지 에 불과 합 니 다.시스템 기본 값,유 니 코드,ASCII 는 우리 가 원 하 는 utf-8 이 없 기 때문에 일반 중국어 시스템 에서 FSO 대상 을 사용 하여 생 성 된 파일 은 gb 2312 웹 인 코딩 형식 으로 UTF-8 인 코딩 을 생 성 할 수 없 기 때문에 영어 등 라틴어 와 중국 어 는 정상적으로 표시 할 수 있 지만 러시아어 등 비 라틴 어족 처럼 페이지 에 오류 가 발생 합 니 다
 
function createfile(sfilename,scontent)
set fso=server.CreateObject("scripting.filesystemobject")
'set f1=fso.opentextfile(sfilename,2,true,-1) 'append=8 only write=2 Unicode =-1
set f1=fso.opentextfile(sfilename,2,true)
f1.write(scontent)
f1.close
set fso=nothing
end function
FSO 대상 을 ADODB.STREAM 대상 으로 대체 하 는 것 을 선택 하 십시오.STREAM 류 는 LOADFROMFILE 과 SAVETOFILE 방법 이 있 고 중요 한 속성 인 CHARSET 이 있 기 때 문 입 니 다.이것 은 FSO 에 없 는 것 입 니 다.다음 함 수 는 Adodb.stream 으로 작성 하여 UTF-8 웹 파일 을 성공 적 으로 생 성 합 니 다
 
function createfile(sfilename,scontent)
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"
.Position = objStream.Size
.WriteText=scontent
.SaveToFile sfilename,2
.Close
End With
Set objStream = Nothing
end function
FSO 를 사용 하 는 프로그램 에 대해 이 함 수 를 수정 하면 함수 이름 이 변 하지 않 고 정상적으로 운행 할 수 있어 편리 합 니 다.템 플 릿 으로 파일 을 생 성 하려 면 템 플 릿 파일 을 UTF-8 인 코딩 으로 읽 어야 한다.그렇지 않 으 면 배경 에 올 바른 파일 인 코딩 이 발표 되 지만 템 플 릿 파일 을 읽 으 면 FSO 의 GB 2312 인 코딩,템 플 릿 페이지 의 러시아어 등 비 라틴 어족 으로 인 코딩 되 어 난 장 판이 발생 한다.함수 수정 은 다음 과 같 습 니 다.원래 사용 하 던 FSO 의 READFILE 함수
 
function readfile(sfilename)
Set fso=server.CreateObject("scripting.filesystemobject")
Set f = fso.OpenTextFile(sfilename, 1, true)
if not f.AtEndOfStream then readfile = f.readAll
Set f=nothing
Set fso=nothing
end function
사용 하 던 ADODB.STREAM 의 READFILE 함 수 를 교체 할 때 실제 수요 에 따라 Function readfile(sfilename,charset)charset 매개 변 수 를 제거 하거나 보존 하 는 것 을 주의 하 십시오
 
Function readfile (sfilename)
Dim f
Set stm=server.CreateObject("adodb.stream")
stm.Type=2 '
stm.mode=3
stm.charset="utf-8"
stm.open
stm.loadfromfile sfilename
f=stm.readtext
stm.Close
Set stm=Nothing
readfile=f
End Function
파일 인 코딩 과 웹 페이지 인 코딩 에 대해 서 는'문자 집합 Charset 와 파일 인 코딩 Encoding 의 차이 점 에 대한 상세 한 설명'을 참고 하 시기 바 랍 니 다.다른 샘플 프로그램
 
'-------------------------------------------------
' :ReadTextFile
' : AdoDb.Stream UTF-8
'----------------------------------------------------
Function ReadFromTextFile (FileUrl,CharSet)
Dim str
Set stm=server.CreateObject("adodb.stream")
stm.Type=2 '
stm.mode=3
stm.charset=CharSet
stm.open
stm.loadfromfile server.MapPath(FileUrl)
str=stm.readtext
stm.Close
Set stm=nothing
ReadFromTextFile=str
End Function

'-------------------------------------------------
' :WriteToTextFile
' : AdoDb.Stream UTF-8
'----------------------------------------------------
Sub WriteToTextFile (FileUrl,byval Str,CharSet)
Set stm=Server.CreateObject("adodb.stream")
stm.Type=2 '
stm.mode=3
stm.charset=CharSet
stm.open
stm.WriteText str
stm.SaveToFile server.MapPath(FileUrl),2
stm.flush
stm.Close
Set stm=Nothing
End Sub
그 중에서 이 줄 은 경로 문제 에 주의해 야 합 니 다.stm.saveToFile server.MapPath(FileUrl),2

좋은 웹페이지 즐겨찾기