手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JScript中使用ADODB.Stream判断文件编码的代码
JScript中使用ADODB.Stream判断文件编码的代码
摘要:一开始使用ASCII编码来读取文本数据,模拟读取二进制数据,但是发现如果字符编码大于127时,只会得到小于128的值,相当于和128取余了,...

一开始使用ASCII编码来读取文本数据,模拟读取二进制数据,但是发现如果字符编码大于127时,只会得到小于128的值,相当于和128取余了,因此ASCII编码是不行的。

继续寻找,在CodeProejct.com找到一篇文章《ReadingAndWritingBinaryFilesUsingJScript》,里面刚好有我需要的内容。

其实说来也简单,就是把编码换一下,使用437,这个是IBM扩展过的ASCII编码,把ASCII编码的最高位也利用起来,将字符集中的字符从128个扩展到256个,而使用这个字符集读取的字符数据就相当于原始二进制数据了。

解决了障碍后,就要开始识别文件的编码了,通过使用ADODB.Stream对象来读取文件的开始两个字节,然后根据这两个字节就可以判断文件编码是什么了。

UTF-8文件如果带BOM的话,那么头两个字节就是0xEF、0xBB,再例如Unicode文件的开始两个字节是0xFF、0xFE,这些就是判断文件编码的依据。

需要注意的是,在ADODB.Stream读取字符时,并不是一一对应的,也就是说,如果二进制数据是0xEF,读取出来的字符经过charCodeAt之后,并不是0xFE,而是另外的值,这个对应表可以在上面提到的文章里查到。

程序代码:

复制代码 代码如下:

functionCheckEncoding(filename){

varstream=newActiveXObject("ADODB.Stream");

stream.Mode=3;

stream.Type=2;

stream.Open();

stream.Charset="437";

stream.LoadFromFile(filename);

varbom=escape(stream.ReadText(2));

switch(bom){

//0xEF,0xBB=>UTF-8

case"%u2229%u2557":

encoding="UTF-8";

break;

//0xFF,0xFE=>Unicode

case"%A0%u25A0":

//0xFE,0xFF=>Unicodebigendian

case"%u25A0%A0":

encoding="Unicode";

break;

//判断不出来就使用GBK,这样可以在大多数情况下正确处理中文

default:

encoding="GBK";

break;

}

stream.Close();

deletestream;

stream=null;

returnencoding;

}

这样,在需要的时候,通过调用CheckEncoding函数就可以获取文件的编码了。

希望此文对你有所帮助。

【JScript中使用ADODB.Stream判断文件编码的代码】相关文章:

Javascript 高阶函数使用介绍

Javascript随机显示图片的源代码

JavaScript中的sub()方法的使用介绍

JavaScript使用addEventListener添加事件监听用法实例

JavaScript中的small()方法使用详解

JavaScript中valueOf()方法的使用介绍

JavaScript中length属性的使用方法

JavaScript实现点击文字切换登录窗口的方法

JavaScript判断数组是否包含指定元素的方法

JavaScript中的条件判断语句使用详解

精品推荐
分类导航