欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JScript中使用ADODB.Stream判斷文件編碼的代碼

 更新時(shí)間:2008年06月09日 12:08:12   作者:  
在實(shí)現(xiàn)TextStraem的時(shí)候,找到判斷文件編碼的代碼是VBS的,但是在JScript中是沒有ASC等函數(shù)的,也不能對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行處理,因此需要通過一個(gè)特別的方法來獲取文件開關(guān)的編碼標(biāo)識(shí)。
一開始使用ASCII編碼來讀取文本數(shù)據(jù),模擬讀取二進(jìn)制數(shù)據(jù),但是發(fā)現(xiàn)如果字符編碼大于127時(shí),只會(huì)得到小于128的值,相當(dāng)于和128取余了,因此ASCII編碼是不行的。

繼續(xù)尋找,在CodeProejct.com找到一篇文章《Reading And Writing Binary Files Using JScript》,里面剛好有我需要的內(nèi)容。

其實(shí)說來也簡(jiǎn)單,就是把編碼換一下,使用437,這個(gè)是IBM擴(kuò)展過的ASCII編碼,把ASCII編碼的最高位也利用起來,將字符集中的字符從128個(gè)擴(kuò)展到256個(gè),而使用這個(gè)字符集讀取的字符數(shù)據(jù)就相當(dāng)于原始二進(jìn)制數(shù)據(jù)了。

解決了障礙后,就要開始識(shí)別文件的編碼了,通過使用ADODB.Stream對(duì)象來讀取文件的開始兩個(gè)字節(jié),然后根據(jù)這兩個(gè)字節(jié)就可以判斷文件編碼是什么了。

UTF-8文件如果帶BOM的話,那么頭兩個(gè)字節(jié)就是0xEF、0xBB,再例如Unicode文件的開始兩個(gè)字節(jié)是0xFF、0xFE,這些就是判斷文件編碼的依據(jù)。

需要注意的是,在ADODB.Stream讀取字符時(shí),并不是一一對(duì)應(yīng)的,也就是說,如果二進(jìn)制數(shù)據(jù)是0xEF,讀取出來的字符經(jīng)過charCodeAt之后,并不是0xFE,而是另外的值,這個(gè)對(duì)應(yīng)表可以在上面提到的文章里查到。

程序代碼:
復(fù)制代碼 代碼如下:

function CheckEncoding(filename) { 
    var stream = new ActiveXObject("ADODB.Stream"); 
    stream.Mode = 3; 
    stream.Type = 2; 
    stream.Open(); 
    stream.Charset = "437"; 
    stream.LoadFromFile(filename); 
    var bom = 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 => Unicode big endian 
        case "%u25A0%A0": 
            encoding = "Unicode"; 
            break; 
        // 判斷不出來就使用GBK,這樣可以在大多數(shù)情況下正確處理中文 
        default: 
            encoding = "GBK"; 
            break; 
    } 
    stream.Close(); 
    delete stream; 
    stream = null; 
    return encoding; 


這樣,在需要的時(shí)候,通過調(diào)用CheckEncoding函數(shù)就可以獲取文件的編碼了。
希望此文對(duì)你有所幫助。

相關(guān)文章

  • JS實(shí)現(xiàn)超簡(jiǎn)潔網(wǎng)頁title標(biāo)題跑動(dòng)閃爍提示效果代碼

    JS實(shí)現(xiàn)超簡(jiǎn)潔網(wǎng)頁title標(biāo)題跑動(dòng)閃爍提示效果代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)超簡(jiǎn)潔網(wǎng)頁title標(biāo)題跑動(dòng)閃爍提示效果代碼,涉及JavaScript結(jié)合定時(shí)函數(shù)動(dòng)態(tài)操作頁面元素屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • JavaScript this指向相關(guān)原理及實(shí)例解析

    JavaScript this指向相關(guān)原理及實(shí)例解析

    這篇文章主要介紹了JavaScript this指向相關(guān)原理及實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • JavaScript閉包相關(guān)知識(shí)解析

    JavaScript閉包相關(guān)知識(shí)解析

    這篇文章主要介紹了JavaScript閉包相關(guān)知識(shí)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Selenium執(zhí)行Javascript腳本參數(shù)及返回值過程詳解

    Selenium執(zhí)行Javascript腳本參數(shù)及返回值過程詳解

    這篇文章主要介紹了Selenium執(zhí)行Javascript腳本參數(shù)及返回值過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • JavaScript 數(shù)組遍歷的五種方法

    JavaScript 數(shù)組遍歷的五種方法

    這篇文章主要介紹了JavaScript 數(shù)組遍歷的五種方法,幫助大家更好的理解和學(xué)習(xí)使用JavaScript,感興趣的朋友可以了解下
    2021-03-03
  • js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能

    js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Javascript函數(shù)式編程簡(jiǎn)單介紹

    Javascript函數(shù)式編程簡(jiǎn)單介紹

    什么是函數(shù)式編程?根據(jù)百度百科的描述,“函數(shù)式編程是種編程典范,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語言最重要的基礎(chǔ)是 λ 演算(lambda calculus)。而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)。”
    2015-10-10
  • js常用方法、檢查是否有特殊字符串、倒序截取字符串操作完整示例

    js常用方法、檢查是否有特殊字符串、倒序截取字符串操作完整示例

    這篇文章主要介紹了js常用方法、檢查是否有特殊字符串、倒序截取字符串操作,結(jié)合完整實(shí)例形式分析了JavaScript字符串轉(zhuǎn)換、檢測(cè)、倒序、截取等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • 通用的javascript 換行色換列色的小js

    通用的javascript 換行色換列色的小js

    通用的javascript 換行色換列色的小js...
    2007-04-04
  • 詳解js的事件代理(委托)

    詳解js的事件代理(委托)

    JavaScript事件代理(委托)一般用于以下情況:1. 事件注冊(cè)在祖先級(jí)元素上,代理其子級(jí)元素??梢詼p少事件注冊(cè)數(shù)量,節(jié)約內(nèi)存開銷,提高性能。2. 對(duì)js動(dòng)態(tài)添加的子元素可自動(dòng)綁定事件。本文主要介紹用原生 js 實(shí)現(xiàn)該功能。下面跟著小編一起來看下吧
    2016-12-12

最新評(píng)論