'ANSI 无格式定义;
'Unicode 前两个字节为FFFE;
'Unicode big endian 前两字节为FEFF;
'UTF-8 前两字节为EFBB;
Function checkFileEncoder(FilePath)
Dim stream, binheader
Set stream = Server.CreateObject("adodb.stream")
stream.Type = 1'设置为2进制,主要是为了判断文件编码
stream.Mode = 3 'forreadwrite
stream.Open
stream.LoadFromFile FilePath
stream.position = 0
binheader = stream.read(2)
stream.Close
Set stream = Nothing
If LenB(binheader) = 1 Then checkFileEncoder = "gb2312"
If AscB(MidB(binheader, 1, 1)) = &HEF And AscB(MidB(binheader, 2, 1)) = &HBB Then
checkFileEncoder = "utf-8"
ElseIf AscB(MidB(binheader, 1, 1)) = &HFF And AscB(MidB(binheader, 2, 1)) = &HFE Then
checkFileEncoder = "unicode"
Else
checkFileEncoder = "gb2312"
End If
End Function
Sub Read(FilePath)
Dim stream, fileEncoder
fileEncoder = checkFileEncoder(FilePath) '获取文件编码格式
Set stream = Server.CreateObject("adodb.stream")
stream.Charset = fileEncoder '设置编码格式
stream.Type = 2
stream.Mode = 3
stream.Open
stream.LoadFromFile FilePath
MyResponse.Write stream.ReadText()
stream.Close
Set stream = Nothing
End Sub
call Read(Server.MapPath("data.txt"))