用asp实现检测文件编码

最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶;费了好久,总算搞定;

原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码

相关资料:

ANSI:        无格式定义;
Unicode:        前两个字节为FFFE;
Unicode big endian:   前两字节为FEFF; 
UTF-8:         前两字节为EFBB;

代码如下:

function checkcode(path) 
set objstream=server.createobject("adodb.stream") 
objstream.Type=1 
objstream.mode=3 
objstream.open 
objstream.Position=0 
objstream.loadfromfile path 
bintou=objstream.read(2) 
If AscB(MidB(bintou,1,1))=&HEF And AscB(MidB(bintou,2,1))=&HBB Then 
checkcoder="utf-8" 
ElseIf AscB(MidB(bintou,1,1))=&HFF And AscB(MidB(bintou,2,1))=&HFE Then 
checkcode="unicode" 
Else 
checkcode="gb2312" 
End If 
objstream.close 
set objstream=nothing 
end function

补充:

谢小雨提醒,先前的简直是胡扯;ANSI的本地编码,都是各国自己定义的,没有固定的文件头格式,在大陆中文操作系统下,是可读的gb2312,在其他语言的系统下,就是乱码,所以这部分没必要再详细区分
得到文件编码,stream流就能按照需要的编码打开,就不会乱码了

(0)

相关推荐

  • 用asp实现检测文件编码

    最近,在搞这个东西,网上也找不到asp相关的,如果有人很早弄出来了,也不要笑话偶:费了好久,总算搞定: 原理:用stream对象预读文件的头两个字节,分析判断出utf-8,unicode,ANSI(简体中文操作系统,即gb2312)编码 相关资料: ANSI: 无格式定义: Unicode:   前两个字节为FFFE: Unicode big endian:   前两字节为FEFF: UTF-8:    前两字节为EFBB: 复制代码 代码如下: function checkcode(path)

  • 自己写了一个php检测文件编码的函数

    关于文件编码的检测,百度一下一大把都是,但是确实没有能用的. 很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出. 看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱. 最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数, 还包括自动检测编码并按指点编码读取文件的函数. 源码献上,不喜勿喷. 网上的方法我试过没用才写的,说不定环境不一样导致的. 所以万一没用,也别喷我,我只是共享想思路

  • php检测文件编码的方法示例

    关于文件编码的检测,百度一下一大把都是,但是确实没有能用的.很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出.看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱.最终根据PHP手册里 mb_detect_encoding 函数下方的例子,自己写了一个检测函数,还包括自动检测编码并按指点编码读取文件的函数.源码献上. 复制代码 代码如下: <?php /*** 检测文件编码 * @param string $file 文件路径*

  • ASP生成静态文件编码为UTF-8格式的HTML文件

    一般我们在ASP环境下,运行动生静操作时都用到的是FSO,他是专门对文件进行操作的一个组件,他FSO的编码属性只有三种,系统默认,Unicode,ASCII,并没有我们要的utf-8,所以一般中文系统上使用FSO组件生成的文件都是gb2312格式的了,即便您在网页内写上charset="utf-8"也是没用的 要生成utf-8格式的文件,ASP环境下我们用 ADODB.Stream代替FSO读写utf-8文件,因为,ADODB.Stream,有一个CharSet 属性,可以让您定义要打

  • ASP如何检测某文件夹是否存在,不存在则自动创建

    直接给大家分享一下我们测试正常可以使用的代码,并且支持多级目录创建 代码一 Function CreateMultiFolder(ByVal CFolder) Dim objFSO, PhCreateFolder, CreateFolderArray, CreateFolder Dim i, ii, CreateFolderSub, PhCreateFolderSub, BlInfo BlInfo = False CreateFolder = CFolder On Error Resume Ne

  • php实现文件编码批量转换

    有些问题,不能重复转,比如gbk转到utf8,然后有在转成utf8,这样会乱码,我本来试图在转换之前去检测编码的,貌似失败了.我特意试了一个文件,我检测它是是否是gbk或者是utf-8,都返回true.这就不懂了. 复制代码 代码如下: <?php/** * 转换文件编码 * 依赖的扩展filesystem 和 mbstring * @example * <pre> * include_once 'ConvertEncode.php'; * $convert = new ConvertE

  • Python实现检测文件MD5值的方法示例

    本文实例讲述了Python实现检测文件MD5值的方法.分享给大家供大家参考,具体如下: 前面介绍过Python计算文件md5值的方法,这里分析一下Python检测文件MD5值的另一种实现方法. 概述: MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权费用. 实现代码: #python 检测文件MD5值 #python version 2.6 import hashlib im

  • 使用python批量转换文件编码为UTF-8的实现

    由于这两天换了IDE,在导入以前的工程的时候发现了一个大问题,由于以前脑残的我不知道改编码方式,导致出现了大量的GBK,这就很难受,要是一个两个还好说,可是这么多要是一个一个的改我会觉得现在的我比以前还脑残,于是乎,我就想用python批量的修改一下,然后就产生了这篇文章,其中好多不足的地方还请大佬指导 本来一开始的思路还是比较清晰,觉得也比较简单,天真的认为用GBK的方式读取出文件内容,然后UTF8写入就好了,可是在实际的操作中我发现我就是太天真了,出现了大量的问题,比如说: 怎么查看文件的编

  • ASP和PHP文件操作速度的对比

    最近一个项目中,有一个读取某个文件夹下所有文件的功能.使用了ThinkPHP + layui,本地测试没有问题,到客户哪里发现速度奇慢,需要10秒以上才能读取完毕. 经沟通发现一个文件夹有1000+ 个文件,客户之前有一套asp的老系统,1000多个 文件也能实现秒开... 一时竟然没有头绪,难道 PHP 不如 ASP快 ??因为项目中代码太多,编写单独的代码测试.files/1000目录存放了 1428个文件测试. test.asp的源码如下: set fso = server.createo

  • Python批量将csv文件编码方式转换为UTF-8的实战记录

    当我们用pandas是操作CSV文件的时候,常常会因为编码问题出现报错. pandas_libs\parsers.pyx in pandas._libs.parsers.TextReader.read() pandas_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory() pandas_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows

随机推荐