亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

function genCodeStr(){ 
    var codeRE = new RegExp("'(.*)' : '(.*)'","gi"); 
    var tempStr,codeStr = ""; 
    var myReader = new Reader(); 
    myReader.loadFile('inc/gb2312_utf.txt');//這里改成你的對(duì)照表存放的路徑 
    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; 
    } 
}  

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

還需要注意的是,上面的程序是需要在服務(wù)器端運(yùn)行的,因?yàn)樯婕暗轿募僮鳌?
javascript客戶(hù)端程序請(qǐng)看

相關(guān)文章

  • javascript定時(shí)保存表單數(shù)據(jù)的代碼

    javascript定時(shí)保存表單數(shù)據(jù)的代碼

    我相信有不少TX用過(guò)QQ或163的郵箱吧?他們中有一個(gè)比較有用且有趣的功能,如果您在編寫(xiě)郵件,那在固定一個(gè)時(shí)間頻率內(nèi),它會(huì)自動(dòng)將您的郵件內(nèi)容保存起來(lái),以免丟失。
    2011-03-03
  • JS實(shí)現(xiàn)的自定義網(wǎng)頁(yè)拖動(dòng)類(lèi)

    JS實(shí)現(xiàn)的自定義網(wǎng)頁(yè)拖動(dòng)類(lèi)

    這篇文章主要介紹了JS實(shí)現(xiàn)的自定義網(wǎng)頁(yè)拖動(dòng)類(lèi),涉及頁(yè)面元素響應(yīng)鼠標(biāo)事件動(dòng)態(tài)改變屬性的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • java遇到微信小程序

    java遇到微信小程序 "支付驗(yàn)證簽名失敗" 問(wèn)題解決

    這篇文章主要介紹了java遇到微信小程序 "支付驗(yàn)證簽名失敗" 問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • js直接編輯當(dāng)前cookie的腳本

    js直接編輯當(dāng)前cookie的腳本

    非常有創(chuàng)意的一個(gè)腳本,直接利用window.prompt彈出修改對(duì)話(huà)框,不用到cookies目錄去找cookies文件
    2008-09-09
  • javascript解三階幻方(九宮格)

    javascript解三階幻方(九宮格)

    本文給大家分享的是使用javascript實(shí)現(xiàn)解答九宮格問(wèn)題的算法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-04-04
  • JavaScript實(shí)現(xiàn)單圖片上傳并預(yù)覽功能

    JavaScript實(shí)現(xiàn)單圖片上傳并預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)單圖片上傳并預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • JavaScript執(zhí)行效率與性能提升方案

    JavaScript執(zhí)行效率與性能提升方案

    如何提升JavaScript執(zhí)行效率與性能在前端開(kāi)發(fā)中位于一個(gè)很重要的地方,這節(jié)來(lái)研究下如何在平時(shí)做項(xiàng)目過(guò)程中,提升JavaScript性能與運(yùn)行效率,需要的朋友可以參考下
    2012-12-12
  • 微信小程序按鈕點(diǎn)擊動(dòng)畫(huà)效果的實(shí)現(xiàn)

    微信小程序按鈕點(diǎn)擊動(dòng)畫(huà)效果的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序按鈕點(diǎn)擊動(dòng)畫(huà)效果的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • JS的location.href跳出框架打開(kāi)新頁(yè)面的方法

    JS的location.href跳出框架打開(kāi)新頁(yè)面的方法

    登錄頁(yè)面在框架內(nèi)打開(kāi),想讓它直接跳出框架打開(kāi)(這里不是打開(kāi)新窗口),終于在網(wǎng)上找到了辦法,下面分享給大家
    2014-09-09
  • JavaScript實(shí)現(xiàn)表格快速變色效果代碼

    JavaScript實(shí)現(xiàn)表格快速變色效果代碼

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)表格快速變色效果的方法,通過(guò)javascript數(shù)組遍歷結(jié)合時(shí)間函數(shù)來(lái)實(shí)現(xiàn)表格快速變色的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論