关闭

在ASP中自动检测文件的编码格式,支持UTF-8、GB2312、UTF-7、Unicode、Unicode Swap等格式的检测

848人阅读 评论(0) 收藏 举报

本文因偶在转移网站编码格式时所写,参考了这个写的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))
%>

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23201次
    • 积分:348
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:4篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论