服务器之家

服务器之家 > 正文

用asp实现检测文件编码

时间:2019-10-29 14:23     来源/作者: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流就能按照需要的编码打开,就不会乱码了 

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部