最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

需要注意的是,在ADODB.Stream讀取字符時,并不是一一對應(yīng)的,也就是說,如果二進制數(shù)據(jù)是0xEF,讀取出來的字符經(jīng)過charCodeAt之后,并不是0xFE,而是另外的值,這個對應(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; 


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

相關(guān)文章

  • JavaScript?TWaver使用中間點畫折線的方法

    JavaScript?TWaver使用中間點畫折線的方法

    這篇文章主要介紹了JavaScript?TWaver使用中間點畫折線的方法,TWaver的圖形組件庫中提供了拓撲組件、地圖組件、設(shè)備圖組件,以及表格、樹圖、屬性表、圖表等豐富的通用圖形界面組件
    2022-07-07
  • js日期、星座的級聯(lián)顯示代碼

    js日期、星座的級聯(lián)顯示代碼

    本篇文章主要是對js日期、星座的級聯(lián)顯示代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • JavaScript如何借用構(gòu)造函數(shù)繼承

    JavaScript如何借用構(gòu)造函數(shù)繼承

    這篇文章主要介紹了JavaScript如何借用構(gòu)造函數(shù)繼承,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 一個獲取第n個元素節(jié)點的js函數(shù)

    一個獲取第n個元素節(jié)點的js函數(shù)

    這篇文章主要介紹了一個獲取第n個元素節(jié)點的js函數(shù),功能還不完善 ,需要的朋友可以參考下
    2014-09-09
  • JS+CSS實現(xiàn)下拉刷新/上拉加載插件

    JS+CSS實現(xiàn)下拉刷新/上拉加載插件

    這篇文章主要介紹了JS+CSS實現(xiàn)下拉刷新/上拉加載插件,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • TypeScript封裝一個通用的時間格式化方法

    TypeScript封裝一個通用的時間格式化方法

    在日常開發(fā)中,我們經(jīng)常需要將時間格式化為用戶友好的形式,本文將介紹如何在 TypeScript 中封裝一個通用的時間格式化方法,需要的可以了解下
    2025-02-02
  • js實現(xiàn)的在本地預(yù)覽圖片功能示例

    js實現(xiàn)的在本地預(yù)覽圖片功能示例

    這篇文章主要介紹了js實現(xiàn)的在本地預(yù)覽圖片功能,結(jié)合實例形式分析了JavaScript兼容移動web與IE瀏覽器的圖片預(yù)覽功能相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11
  • 第四章之BootStrap表單與圖片

    第四章之BootStrap表單與圖片

    Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。本文給大家介紹Bootstrap表單與圖片的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • JavaScript獲取function所有參數(shù)名的方法

    JavaScript獲取function所有參數(shù)名的方法

    本文使用javascript獲取function所有參數(shù)名的方法,對js獲取function所有參數(shù)名感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • 動態(tài)加載js、css的實例代碼

    動態(tài)加載js、css的實例代碼

    這篇文章主要介紹了動態(tài)加載js、css的實例代碼的相關(guān)資料,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-05-05

最新評論

泸定县| 景德镇市| 汤阴县| 梨树县| 晋江市| 渝中区| 眉山市| 攀枝花市| 慈利县| 谷城县| 会昌县| 襄汾县| 彭水| 南开区| 屏东县| 成都市| 连云港市| 依兰县| 灌阳县| 冀州市| 嘉鱼县| 搜索| 竹山县| 定边县| 彰武县| 宁乡县| 壶关县| 临朐县| 石棉县| 阿图什市| 泰兴市| 沙洋县| 浦县| 屏山县| 云龙县| 格尔木市| 阳原县| 徐水县| 五常市| 余姚市| 陵川县|