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

用javascript實現(xiàn)gb2312轉(zhuǎn)utf-8的腳本

 更新時間:2007年05月16日 00:00:00   作者:  
信息交換用漢字編碼字符集-基本集
漢字標(biāo)準(zhǔn)交換碼共分兩級。第一級為常用字,有3755字,按漢語拼音字母順序排列,第二級為次常用字,有3008字,按部首排列。GB2312的編碼范圍為2121H-777EH.
UNICODE 是兩字節(jié)的全編碼,對于ASCII字符它也使用兩字節(jié)表示。代碼頁是通過高字節(jié)的取值范圍來確定是ASCII字符,還是漢字的高字節(jié)。如果發(fā)生數(shù)據(jù)損壞, 某處內(nèi)容破壞,則會引起其后漢字的混亂。UNICODE則一律使用兩個字節(jié)表示一個字符,最明顯的好處是它簡化了漢字的處理過程。
關(guān)于編碼的文章可以參考:
http://blog.iyi.cn/tech/2005/10/unicode_2.html
http://blog.iyi.cn/tech/2005/10/unicode.html

百度的頁面是gb2312的,URL編碼自然也是從gb轉(zhuǎn)換而來,比如“一”這個字,百度轉(zhuǎn)換的結(jié)果是D2%BB,而從Utf-8轉(zhuǎn)換來的結(jié)果是%E4%B8%80比如google(gb是2字節(jié)編碼,utf-8是3字節(jié)變長編碼)
可以用javascript的encodeURI和decodeURI來得到這些結(jié)果,設(shè)置頁面編碼就可以看到不同結(jié)果了。
在網(wǎng)上找,也沒找到現(xiàn)成的轉(zhuǎn)換程序,只得自己寫。還好網(wǎng)上不缺gb-utf的對照表,修改了一下就可以用了:gb-utf.txt
這個對照表是將gb字節(jié)編碼轉(zhuǎn)到utf的16進制編碼,而不是字節(jié)編碼。
javascript中escape和unescape是轉(zhuǎn)換16進制編碼用的,因此gb漢字到utf漢字的轉(zhuǎn)換思路是:encodeURI("gb漢字"),到對照表中查找utf的16進制編碼,unescape("16進制utf編碼"),得到utf漢字。
中間那一步最關(guān)鍵,我的轉(zhuǎn)換只用到了這一步,其他兩步直接調(diào)用那兩個函數(shù)就可以了。下面是轉(zhuǎn)換程序: 
 
復(fù)制代碼 代碼如下:

function genCodeStr(){ 
    var codeRE = new RegExp("'(.*)' : '(.*)'","gi"); 
    var tempStr,codeStr = ""; 
    var myReader = new Reader(); 
    myReader.loadFile('inc/gb2312_utf.txt');//這里改成你的對照表存放的路徑 
    while(!myReader.fStream.atEndofLine) { 
        tempStr = new String(myReader.fStream.readLine()); 
        codeStr += tempStr.replace(codeRE,"$1") + ":" + tempStr.replace(codeRE,"$2") + ":"; 
    } 
    Application("codeData") = codeStr; 

function getCodeStr(){ 
    var codeStr = new String(Application("codeData")); 
    if(codeStr.indexOf("%a1%a1") == -1){ 
        genCodeStr(); 
    } 
    return new String(Application("codeData")); 

function gb2utf(gbStr){ 
    var codeStr = getCodeStr(); 
    var codeRE = new RegExp("(%..%..)","gi"); 
    var replaceRE = new RegExp("(%..%..)","i"); 
    var gbCode; 
    var utfCode; 
    var gbStart; 
    while((codeRE.lastIndex < gbStr.length) && replaceRE.test(gbStr)){ 
        codeRE.exec(gbStr); 
        gbCode = new String(RegExp.$1); 
        gbStart = new Number(codeStr.indexOf(gbCode.toLowerCase())); 
        var utfStart = 0; 
        if(gbStart != -1){ 
            utfStart= gbStart + 7; 
            utfCode = codeStr.substring(utfStart,utfStart + 6); 
        }else{ 
            utfCode = "%u3000"; 
        } 
        gbStr = gbStr.replace(replaceRE,utfCode); 
    } 
    return gbStr; 

function Reader() {                        //Class        Reader() 
    this.fso;                            //Private    fso 
    this.fUri;                            //Private    fUri 
    this.fStream;                        //Private    fStream 
    try{ 
        this.fso = new ActiveXObject("Scripting.FileSystemObject"); 
    }catch(exception) { 
        throw exception; 
    } 
    this.loadFile = function(file) {        //Public        loadFile(file) 
            this.fUri = Server.mappath(file); 
            //var fStream = fso.CreateTextFile(tfolder,true,false); 
            //fStream.WriteLine('test'); 
            if(this.fso.fileExists(this.fUri)){ 
                this.fStream = this.fso.openTextFile(this.fUri); 
            }else{ 
                Response.write('file dos not exist'); 
            } 
    } 
    this.readLineN = function(num) { 
        var i = 1; 
        while(i < num && !this.fStream.atEndOfLine) { 
            this.fStream.skipLine(); 
            i++ 
        } 
        return this.fStream.readLine(); 
    } 
    this.closeFile = function() { 
        fStream.Close(); 
        fso.Close; 
    } 
}  

對照表就是gb-utf.txt了,你自己改一下讀取路徑即可。

還需要注意的是,上面的程序是需要在服務(wù)器端運行的,因為涉及到文件操作。
javascript客戶端程序請看

相關(guān)文章

  • 微信小程序圖片上傳組件實現(xiàn)圖片拖拽排序

    微信小程序圖片上傳組件實現(xiàn)圖片拖拽排序

    最近在寫小程序過程中遇到一個拖拽排序需求,上網(wǎng)一頓搜索未果,遂自行實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于微信小程序圖片上傳組件實現(xiàn)圖片拖拽排序的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 分享一些不常見卻很實用的JS技巧

    分享一些不常見卻很實用的JS技巧

    有些代碼,需要的時候能寫的出來,但是也需要時間,如果有的東西長時間不接觸,再次看的時候也會感覺很陌生,這篇文章主要給大家介紹了一些不常見卻很實用的JS技巧,既可以作為一個知識的積累,又可以作為閑暇時打發(fā)時間寫寫代碼的記錄,需要的朋友可以參考下
    2021-11-11
  • JS在瀏覽器中存儲用戶名和密碼的操作方法

    JS在瀏覽器中存儲用戶名和密碼的操作方法

    當(dāng)用戶進行登錄頁后,直接從localStorage中把用戶名和密碼取出來,填充到表單里,對用戶體驗來說十分不錯,今天通過本文給大家分享JS在瀏覽器中對用戶名和密碼進行存儲,需要的朋友可以參考下
    2023-06-06
  • 在JavaScript中監(jiān)聽IME鍵盤輸入事件

    在JavaScript中監(jiān)聽IME鍵盤輸入事件

    在 JavaScript 中監(jiān)聽用戶的鍵盤輸入是很容易的事情,但用戶一旦使用了輸入法,問題就變得復(fù)雜了。
    2011-05-05
  • 旺旺在線客服代碼 旺旺客服代碼生成器

    旺旺在線客服代碼 旺旺客服代碼生成器

    很多朋友想在網(wǎng)站上插入自己的阿里旺旺在線聯(lián)系圖片,就像是和QQ一樣,小編為大家詳細(xì)講解了旺旺在線客服代碼以及旺旺客服代碼生成器,希望能夠幫助到大家。
    2018-01-01
  • JavaScript 事件代理需要注意的地方

    JavaScript 事件代理需要注意的地方

    這篇文章主要介紹了JavaScript 事件代理需要注意的地方,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • 多個jquery.datatable共存,checkbox全選異常的快速解決方法

    多個jquery.datatable共存,checkbox全選異常的快速解決方法

    這篇文章主要介紹了多個jquery.datatable共存,checkbox全選異常的快速解決方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • 前端JavaScript經(jīng)典之Promise詳解

    前端JavaScript經(jīng)典之Promise詳解

    Promise是為了解決回調(diào)地獄問題而誕生的,它提供了優(yōu)雅的異步回調(diào)解決方案,這篇文章主要介紹了前端JavaScript經(jīng)典之Promise的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄

    uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄

    最近學(xué)到了一個比較好用的框架uni-app,可以做六端適配,學(xué)習(xí)一下,下面這篇文章主要給大家介紹了關(guān)于uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 基于JSONP原理解析(推薦)

    基于JSONP原理解析(推薦)

    下面小編就為大家推薦一篇基于JSONP原理解析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論

罗江县| 绍兴县| 五华县| 彰化县| 通城县| 乐山市| 长泰县| 石渠县| 石渠县| 郧西县| 祥云县| 扶风县| 遵义县| 达州市| 泸州市| 尤溪县| 平阳县| 郴州市| 石家庄市| 博罗县| 遂川县| 六安市| 横山县| 沅陵县| 连云港市| 教育| 扶绥县| 塘沽区| 漯河市| 福海县| 大安市| 永丰县| 双城市| 宁远县| 北票市| 三门峡市| 乌审旗| 肇东市| 开封市| 广元市| 徐闻县|