本文因偶在转移网站编码格式时所写,参考了这个写的http://www.zuoyefeng.com/show.aspx?id=111&cid=21
他的是C#的,偶是ASP的,需要其他DELPHI和VB格式的可以联系我。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
'本代码由不速白客原创,转载使用请保留此信息,否则偶要追究责任哦。
'探讨技术请加QQ:115269 也请访问我的主页:http://www.772.cn/
'函数调用格式:直接调用GetFileCharSet(文件路径)即可返回
Option Explicit
Function GetFileCharset(ByVal FilePath)
If InStr(FilePath,":")=0 Then
FilePath=Server.MapPath(FilePath)
End If
Dim objStream
Dim LoadBytes
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = 1
.Mode = 3
.Open
.LoadFromFile FilePath
LoadBytes=.Read(3)'仅读取3个字节的BOM信息
.Close
End With
Set objStream = NoThing
Dim FileCharset, strFileHead
'从二进制流中分析文件头的编码信息
strFileHead=BinToHex(LoadBytes)
'判断文件采用了何种编码 BFBBEF
If strFileHead = "EFBBBF" Then
'前3个byte如果为 EF BB BF 则表示为 UTF-8编码
GetFileCharset = "UTF-8"
Else
strFileHead = Left(strFileHead, 4)
If strFileHead = "FEFF" Then
'此时为 unicode big endian 编码
GetFileCharset = "UNICODE BIG"
ElseIf strFileHead = "FFFE" Then
'此时为 unicode 编码
GetFileCharset = "UNICODE"
Else
'否则默认为普通简体中文 GB2312
'你如果知道其它编码的格式还可以继续的分析判断!
GetFileCharset = "GB2312"
End If
End If
End Function
Function BinToHex(vStream)
Dim reVal,I
reVal = 0
For I = 1 To LenB(vStream)
reVal = reVal * 256 + AscB(MidB(vStream,I,1))
Next
BinToHex=Hex(reVal)
End Function
' 这个函数是去掉BOM信息,不建议去掉,否则可能检测不到呢
Function RemoveBOM(ByVal FilePath)
If InStr(FilePath,":")=0 Then
FilePath=Server.MapPath(FilePath)
End If
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = 1
.Mode = 3
.Open
.LoadFromFile FilePath
.Position = 3
.Write = .Read
.SaveToFile FilePath,2
.Close
End With
Set objStream = Nothing
End Function
Dim FilePath
FilePath=Trim(request.ServerVariables("QUERY_STRING"))
If FilePath="" Then FilePath="robots.txt"
Response.Write(GetFileCharset(FilePath))
%>