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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值